Portál AbcLinuxu, 10. listopadu 2025 18:55
#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 exitem, jinak se po skončení vrátí do onoho for cyklu a znovu se forkne.
wait tak dlouho, dokud neselže s ECHILDfork, a potom proveďte stejný počet waitůforkem), 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.