Article View: de.comp.lang.c++
Article #173Re: Neuen Prozess starten und weiterlaufen?
From: Karl-Heinz Krause
Date: Fri, 15 Dec 1995 16:02
Date: Fri, 15 Dec 1995 16:02
42 lines
1579 bytes
1579 bytes
Am 13. Dez. 1995 schrieb Frank Kopp:
> 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() )
> {
> //ersetze diesen Prozess mit externen Programm durch:
> execl ( "/bin/sh/", "sh", command, 0);
> exit(1); // Zur Sicherheit, wird normalerweise nicht erreicht.
> }
> else
> {
> // Du bist 1. Prozess
> // Hier kann man nun die Anzeige aktualisieren usw. zB.:
[...]
Du hast die Sache unnötig kompliziert. fork() hat einen Funktionswert.
Beim Sohnprozeß ist der Funktionswert 0, beim Vater ist es die pid des
neu erzeugten Sohnes. Also einfacher:
pid_t childpid = fork();
if (childpid == 0) {
/* Hier ist der Sohn */
execl (...);
}
else {
/* Hier ist der Vater. */
/* Der Wert von childpid ist die pid des Sohnes. */
...
}
Karl-Heinz Krause
Technical Details
Message-ID:
<4as9mv$nlm@news00.btx.dtag.de>Path:
arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail!KrauseReferences:
<4ajrja$9mr@sparcserver.lrz-muenchen.de> <4an0ei$ekh@sparcserver.lrz-muenchen.de>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++,de.comp.lang.c Message-ID: <4as9mv$nlm@news00.btx.dtag.de> From: Krause@t-online.de (Karl-Heinz Krause) Path: arc1-ca.pugleaf.net!news00.btx.dtag.de!not-for-mail!Krause Subject: Re: Neuen Prozess starten und weiterlaufen? Date: Fri, 15 Dec 1995 16:02:23 +0000 References: <4ajrja$9mr@sparcserver.lrz-muenchen.de> <4an0ei$ekh@sparcserver.lrz-muenchen.de> X-Gateway: ZCONNECT XX ius.gun.de [UNIX/Connect v0.73] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit