Portál AbcLinuxu, 13. května 2025 22:59
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
void pracuj(){
printf("Zavolal jsem metodu pracuj\n");
printf("Rodicovsky proces je: %d",(int)getppid());
sleep(5);
printf("Konec metody pracuj\n\n");
}
int main (){
pid_t child_pid;
int status;
printf ("the main program process id is %d\n", (int) getpid ());
for(int i=0;i<2;i++){
child_pid = fork ();
if(child_pid == 0){
printf("vytvoreny potomek %d\n",(int)getpid());
pracuj();
}
}
wait(&status);
printf("Konec programu\n");
return (0);
}
Řešení dotazu:
pracuj
(nebo ta podmínková větev potomka) musí končit exit
em, jinak se po skončení vrátí do onoho for cyklu a znovu se fork
ne.
wait
tak dlouho, dokud neselže s ECHILD
fork
, a potom proveďte stejný počet wait
ůfork
em), a když wait
vrátí nějaké PID, odebrte je z té množiny, takže když bude ta množina prázdná, žádné další dítě není
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.