🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #173

Re: Neuen Prozess starten und weiterlaufen?

#173
From: Karl-Heinz Krause
Date: Fri, 15 Dec 1995 16:02
42 lines
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!Krause
References: <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