**argv modifizieren; exec-output in file schreiben
-
das mit dem NULL übergeben versteh ich jetzt nicht ganz. wenn ich 5 argumente hab, dann ist wohl einfach das 5te argument das letzte, oder?
1. wieso kein return 0?
2. ich weiß schon, dass es mit pipes gehen würde, mein problem is, der aufruf selbst ist schon definiert! ich kann den aufruf der update.exe nicht beeinflussen; deswegen schreib ich ja den "wrapper"
-
guni schrieb:
das mit dem NULL übergeben versteh ich jetzt nicht ganz. wenn ich 5 argumente hab, dann ist wohl einfach das 5te argument das letzte, oder?
was ist denn so schwer zu verstehen, dass das letzte Element stets NULL sein soll?
execl("unzip.exe","unzip.exe","-v","Image.zip", NULL);
man: execl(3) ist eine Ellipse, die zur Laufzeit bestimmen soll, wie viele Argumente übergeben wurden. Das geht nur, wenn das letzte Element NULL ist.
-
ja. ok. nehm ich mal so hin.
und was is mit dem output? weiß da noch wer weiter?lg, guni
-
hilfe! ich komm nicht mehr weiter!
-
was genau willst du jetzt?
-
ich will das, was mein befehl normalerweise am screen ausgibt in C(!!) "abfangen" und in eine Datei schreiben!
-
das ist OS-abhängig. Unter Unix machst du das mit pipes. Wie es unter Windows geht, weiß ich nicht. Muss im richtigen Unterforum fragen oder um Verschiebung bitten.
-
Also Redirecting funktioniert unter Windows natürlich mit "prog > output.txt". Aber das ist so simpel, daß du es bestimmt schon probiert hast. Eine andere Möglichkeit wäre das hier zu versuchen.
freopen("file.txt","w",stdout);
Damit fängst du die meisten Meldungen ab, z.B. von printf und co.
EDIT:
fclose(stdout);
dann aber nicht vergessen!
-
hallo,
danke für eure hilfreichen beiträge bisher. bin gerade noch auf ein anderes problem gestroßen und zwar startet mir ein einfaches execl nicht mehrere programme:
int main(int argc, char **argv) { execl("C:\\WINDOWS\\SYSTEM32\\NOTEPAD.EXE",NULL); execl("C:\\WINDOWS\\SYSTEM32\\MSHEART.EXE",NULL); execl("C:\\WINDOWS\\SYSTEM32\\MSPAINT.EXE",NULL); return 0; }
wieso wird immer nur das erste programm gestartet; bzw. wie kann ich sagen, dass mehrere programme gestartet werden sollen?!
lg, guni
-
Execl kommt nicht zurück, wenn ich mich nicht irre. Du müsstest dafür vorher einen eigenen Thread machen.