Benutzung des Befehls: execvp()
-
Achso

werds gleich ausprobieren! Danke!
Edit: Ok es funktioniert! Aber:
Nur wenn den ersten Parameter so setze:char *argv[]={[b]"",[/b]"--load-cookies","cookies", "--save-cookies","cookies", "--keep-session-cookies", "www.google.de"};Außerdem stört mich dann bei der Ausgabe:
--2009-11-22 20:11:08-- http://www.google.de/
Auflösen des Hostnamen »www.google.de«.... 74.125.39.103, 74.125.39.99, 74.125.39.105, ...
Verbindungsaufbau zu www.google.de|74.125.39.103|:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In »index.html« speichern.[ <=> ] 6.013 --.-K/s in 0,02s
2009-11-22 20:11:08 (314 KB/s) - »index.html« gespeichert [6013]
**--2009-11-22 20:11:08-- http://%7C%FD%13/
Auflösen des Hostnamen »|\375\023«.... fehlgeschlagen: Name or service not known.
: kann die Host-Adresse »|�« nicht auflösen
**
BEENDET --2009-11-22 20:11:08--
Geholt: 1 Dateien, 5,9K in 0,02s (314 KB/s)Ich sag schonmal danke

-
Schauen wir doch mal, was in der Dokumentation steht man: execvp.
[...] The first argument, by convention, should point to
the filename associated with the file being executed. The array of
pointers must be terminated by a NULL pointer.=>
char *argv[]={"wget","--load-cookies","cookies", "--save-cookies","cookies", "--keep-session-cookies", "www.google.de", 0x0};
Außerdem gehört das Thema in das Linux-Forum, da execvp kein Teil des ISO-Standards ist!
-
Oh
wusste ich nicht!
Trotzdem danke

-
#include <iostream> #include <stdio.h> using namespace std; int main(void){ char* arg[]={"","www.google.de",0x0}; execvp("wget",arg); //bis hier her und nicht weiter getchar(); return 0; }Kann mir mal jemand erklären warum mein Programm an dieser Stelle endet? Es passiert nur wenn ich wget mit execvp aufrufe; nachdem er wget ausgeführt hat endet mein Programm

Bin echt ratlos

Hilfe!! ^^
-
exec ersetzt den laufenden Prozess durch den aufgerufenen. Dein Programm "endet" also nichtmal richtig, und wenn, dann *beim* Aufruf von wget, nicht danach.
Bitte einfach mal die manpage lesen, da steht sowas drin. Erster Satz.
-
Bashar schrieb:
exec ersetzt den laufenden Prozess durch den aufgerufenen. Dein Programm "endet" also nichtmal richtig, und wenn, dann *beim* Aufruf von wget, nicht danach.
Bitte einfach mal die manpage lesen, da steht sowas drin. Erster Satz.Doch wget wird ganz ausgeführt , seh ich an der Ausgabei und der Datei die gespeichert wird! Danach ist das Programm einfach zu Ende

-
wget ist doch nicht dein Programm. Und jetzt RTFM.
-
Hab sie schon gelesen... Aber hilft mir auch nicht weiter...

-
Willst du nicht lieber die Funktion "system" benutzen?
Du scheinst die exec-Funktionen nicht verstanden zu haben... alles was nach deinem exec-Aufruf ist, wird NICHT mehr ausgeführt!!!
-
achso

Nein system will ich nicht benutzen, gibt es noch eine andere Möglichkeit?
-
fork und dann execvp
-
Bashar schrieb:
fork und dann execvp
Danke Bashar
Hat mir echt geholfen :xmas1: