PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C: Wie Kommandozeilen nebenläufig ausführen?



Linus
12-07-2009, 20:41
Für Kommandozeilen vom C-Programm aus verwende ich bisher execl, aber das ist ja nicht nebenläufig. In der Man-Page dazu finde ich auch nichts nebenläufiges.
Bleibt nur ein fork und anschließend execl um Kommandozeilen nebenläufig auszuführen? :confused:

jeebee
12-07-2009, 21:45
Das oder den Shell-Mechanismus fürs Ausführen im Hintergrund verwenden:
system("program &");

Linus
12-07-2009, 22:35
Das oder den Shell-Mechanismus fürs Ausführen im Hintergrund verwenden:
system("program &");

Funktioniert das? :confused:
Ich denke die Shell wartet auf program.

Naja, ich kann es ja mal mit nohup probieren.

jeebee
13-07-2009, 08:51
also das hier funktioniert (sprich "end" wird sofort ausgegeben und das Programm terminiert, während das sleep im Hintergrund weiterläuft.)


#include <stdio.h>

int main() {
system("sleep 10 &");
printf("end\n");
return 0;
}

anda_skoa
13-07-2009, 14:55
fork und dann exec haben natürlich den Vorteil, dass du im Hauptprogramm die PID des anderen kennst und es daher auch kontrollieren (z.B. killen) kannst.

Ciao,
_

msi
13-07-2009, 18:12
if ( !(pid=fork()) ) execYY(..);
if ( pid<0 ) error....

ist der standardweg

jeebee
13-07-2009, 22:54
Ist mir bewusst, der TE fragte aber nach alternativen Wegen, dies zu realisieren (genauer gesagt, nach einem Weg ohne selber forken zu müssen -- meine Interpretation von Post #1).