Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » GNU/Linux » Mehrere prozesse starten - Linux

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.12.2002, 01:18 Uhr
~babysitter
Gast


Hallo Leute !
Ich habe hier ein einfaches Listing das demonstriert wie man einen Kindsprozess mit der Funktion fork() startet ( aus Buch). Ich möchte jedoch gleichzeitig, aus einen programm heraus, mehrere Prozesse starten zb. 5 . Wie baue ich das Programm auf, ich muss ja die Fork Funktion mehrmals aufrufen ? Mehrere if Anweisungen ??? Die Programm-Struktur ist hier das problem. Ich hoffe das jemand meine Frage versteht !
Hier noch das vorhandene Listing.
Danke für jede Antwort


/* Startet mit fork() einen neuen Prozess. */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
pid_t pid;

pid = fork();

if (pid < 0)
{
printf("Fehler : fork () lieferte %u.\n", pid);
exit(1);
}

if (pid == 0)
{
printf("Kind : PID = %u. PID des Eltern = %u\n",
getpid(), getppid());
sleep(2);
puts ("Kind : wird jetzt beendet.");
}
else
{
printf("Eltern: PID = %u. PID des Kindes = %u\n",
getpid(), pid);
puts("Eltern: lege mich für 60 Sekunden schlafen.");
sleep(60);
puts("Eltern: wacht wieder auf.");
}

return 0;
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.01.2003, 13:57 Uhr
~babysitter
Gast


Ok, man hat mir geholfen. Die Lösung ist zimlich einfach gewesen, wenn man es weiß :-)
Das Listing unten startet 5 Prozesse , der Vaterprozess wartet bis die Kinder fertig sind und "stirbt" dann. Vileicht braucht es noch jemand .


/* 5 Prozesse mit fork() */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
pid_t pid[5];
int i;

for (i = 0; i < 5; i++)
if (!(pid[i] = fork()))
break;

if (i == 5) { /* Vater prozess */
/*
* Wartet bis Kinder fertig
*/
for (i = 0; i < 5; i++)
waitpid(pid[i], NULL, 0);

/*
* Schreibt Ihre Pid-s
*/
printf("Ich bin Vater (pid = %u) mit 5 Kinder:\n", getpid());
for (i = 0; i < 5; i++)
printf("pid[%u] = %u\n", i, pid[i]);

exit(0);
}

/*
* Das tut nur Kind-Prozess
*/
printf("Ich bin Kind(pid = %u), und mein Vater ist (pid = %u)\n",
getpid(), getppid());

exit(0);
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ GNU/Linux ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: