#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <signal.h>
void gestore(int sig){
return;
}
int main(int argc, char *argv[]){
int i,status,pid;
int flag[10];
for(i=1;i<argc;i++){
pid = fork();
if(pid<0){
perror("La fork è errata!\n"); }
if(pid==0){
signal(SIGINT,gestore);
pause();
if(flag[i]==1){
printf("Processo attivato %d",getpid
()); }
if(flag[i]==0){
printf("Processo terminato %d",getpid
()); }
}
else{
printf("Creato processo figlio: %d",pid
); signal(SIGINT,SIG_IGN);
pid = wait(&status);
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3lzL3dhaXQuaD4KI2luY2x1ZGUgPHNpZ25hbC5oPgoKdm9pZCBnZXN0b3JlKGludCBzaWcpewoJcmV0dXJuOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKXsKCWludCBpLHN0YXR1cyxwaWQ7CglpbnQgZmxhZ1sxMF07Cglmb3IoaT0xO2k8YXJnYztpKyspewoJCXBpZCA9IGZvcmsoKTsKCQlmbGFnW2ldPWF0b2koYXJndltpXSk7CgkJCgkJaWYocGlkPDApewoJCQlwZXJyb3IoIkxhIGZvcmsgw6ggZXJyYXRhIVxuIik7CgkJCWV4aXQoMCk7CgkJfQoJCWlmKHBpZD09MCl7CgkJCXNpZ25hbChTSUdJTlQsZ2VzdG9yZSk7CgkJCXBhdXNlKCk7CgkJCWlmKGZsYWdbaV09PTEpewoJCQkJcHJpbnRmKCJQcm9jZXNzbyBhdHRpdmF0byAlZCIsZ2V0cGlkKCkpOwoJCQl9CgkJCWlmKGZsYWdbaV09PTApewoJCQkJcHJpbnRmKCJQcm9jZXNzbyB0ZXJtaW5hdG8gJWQiLGdldHBpZCgpKTsKCQkJfQoJCQlleGl0KDApOwoJCX0KCQllbHNlewoJCQlwcmludGYoIkNyZWF0byBwcm9jZXNzbyBmaWdsaW86ICVkIixwaWQpOwoJCQlzaWduYWwoU0lHSU5ULFNJR19JR04pOwoJCQlwaWQgPSB3YWl0KCZzdGF0dXMpOwoJCX0KCX0KfQ==