fork download
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <stdlib.h>
  4. #include <sys/wait.h>
  5. #include <signal.h>
  6.  
  7. void gestore(int sig){
  8. return;
  9. }
  10.  
  11. int main(int argc, char *argv[]){
  12. int i,status,pid;
  13. int flag[10];
  14. for(i=1;i<argc;i++){
  15. pid = fork();
  16. flag[i]=atoi(argv[i]);
  17.  
  18. if(pid<0){
  19. perror("La fork è errata!\n");
  20. exit(0);
  21. }
  22. if(pid==0){
  23. signal(SIGINT,gestore);
  24. pause();
  25. if(flag[i]==1){
  26. printf("Processo attivato %d",getpid());
  27. }
  28. if(flag[i]==0){
  29. printf("Processo terminato %d",getpid());
  30. }
  31. exit(0);
  32. }
  33. else{
  34. printf("Creato processo figlio: %d",pid);
  35. signal(SIGINT,SIG_IGN);
  36. pid = wait(&status);
  37. }
  38. }
  39. }
Success #stdin #stdout 0s 4684KB
stdin
./attivazione 1 0 1
stdout
Standard output is empty