Article View: de.comp.lang.c++
Article #170Re: Neuen Prozess starten und weiterlaufen?
From: J Wunsch
Date: Thu, 14 Dec 1995 23:47
Date: Thu, 14 Dec 1995 23:47
48 lines
2154 bytes
2154 bytes
Frank Kopp <kopp> writes:
^^^^ (Dein Newsreader hat hier ein Problem)
> >- Starte zweiten Prozess
>
> int starte_extern(char* command)
> {
>
> pid_t old_pid = getpid();
> fork();
>
> // der kopiert den ersten Prozess. Jetzt hat man zwei Prozesse die das
> // selbe tun, allerdings haben sie unterschieliche PIDs
> // Deshalb kommt jetzt eine Abfrage:
>
> if ( old_pid != getpid() )
Normalerweise benutzt man den Rückkehrwert von fork(), und testet ihn
vorsichtshalber auch noch gegen -1 ("Cannot fork").
> {
> //ersetze diesen Prozess mit externen Programm durch:
> execl ( "/bin/sh/", "sh", command, 0);
> exit(1); // Zur Sicherheit, wird normalerweise nicht erreicht.
Wird in jedem richtigen System immer erreicht.
"/bin/sh/" verweist (dank des trailing slash) auf ein Verzeichnis.
Die Bourne-Shell ist meist keins. :-)
[...]
> ret = waitpid(-1, &status, WNOHANG); // hier wird geprueft, ob der 2.
> // Prozess noch laeuft.
> XmUpdateDisplay(display);
> }
> status = WEXITSTATUS(status); // Dies ist der returncode des 2. Prozesses
WEXITSTATUS() ist nur gültig, wenn WIFEXITED(status) != FALSE ist.
(Im anderen Fall ist hoffentlich WIFSIGNALED(status) != FALSE, und Du
kannst die Ursache des Todes Deines Kindes mittels WTERMSIG()
ermitteln.)
--
cheers, J"org
joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)
Technical Details
Message-ID:
<4aqd1t$rbt@uriah.heep.sax.de>Path:
arc1-ca.pugleaf.net!uriah.heep!newsReferences:
<4ajrja$9mr@sparcserver.lrz-muenchen.de> <4an0ei$ekh@sparcserver.lrz-muenchen.de>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!uriah.heep!news From: j@uriah.heep.sax.de (J Wunsch) Newsgroups: de.comp.lang.c++,de.comp.lang.c,de.comp.os.unix Subject: Re: Neuen Prozess starten und weiterlaufen? Followup-To: de.comp.os.unix Date: 14 Dec 1995 23:47:09 GMT Organization: Private BSD site, Dresden Message-ID: <4aqd1t$rbt@uriah.heep.sax.de> References: <4ajrja$9mr@sparcserver.lrz-muenchen.de> <4an0ei$ekh@sparcserver.lrz-muenchen.de> Reply-To: joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch) NNTP-Posting-Host: localhost.heep.sax.de Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Newsreader: knews 0.9.3