[SOLVED]Frage zu exec* in C
-
Hallo
Ich möchte in einem C Programm eine andere Application(z.B foobar) starten mit
execl? oder execlp ? o. execle, o. execv, o. execvp?jedenfalls liegt mei Problem darin das, die gestartete Application ein Parameter
übergeben werden soll welches intern für foobar argc=1 (als ob es kein parameter hätte) und in argv[0] der Parameter steht statt wie sonst üblich der name der App foobar.Anders ausgedrückt
Normalerweise wenn ich foobar starte: "foobar foo1"
ist:
argc = 2 und argv[0]=foobar argv[1]=foo1wunsch:
argc = 1 und argv[0]=foo1Ich hab die Man page von exec* gelesen und konnte leider das Problem nicht selbst lösen.
-
Du solltest deine Fragen verständlicher stellen.
Je nach exec* Variante erfolgt die Übergabe der Parameter unterschiedlich. In jedem Fall ist der 0te Parameter den du übergibst argv[0]
also zB.
execlp("foobar", "foo1", 0x0);
siehe man: execlp
-
Warum nicht system ("prog parm &");
-
Aus man execv:
Die exec-Bibliotheksfunktionen ersetzen den aktuellen Programmcode im
Speicher mit neuem Programmcode.Willst du das wirklich?
-
@knivil
daher vorher ein man: vforkpid_t pid = vfork(); if(pid == -1) { perror("vfork"); return 1; } else if(pid == 0) { if(execlp("foobar", "foo1", 0x0) == -1) { perror("execlp"); _exit(1); } }
@pferdefreund
Mit system bekommt er nicht das hin, was er vorhat, wenn ich ihn richtig verstanden habe. Außerdem ist system keine tolle Funktion. Startet erst eine Shell, die dann den Parameter interpretiert.
-
Stellt sich nur noch die Frage, warum der Parameter nicht in argv[1] stehen darf.
-
Vielen dank es funktioniert einwandfrei!