fork download
  1. #include <sys/types.h>
  2. #include <sys/wait.h>
  3. #include <stdio.h>
  4. #include <unistd.h>
  5.  
  6. int main() {
  7. int value = 10;
  8. pid_t pid;
  9.  
  10. pid = fork();
  11.  
  12. if (pid > 0) {
  13. value += 10;
  14. waitpid(-1, NULL, 0);
  15. printf("%d: val = %d\n", getpid(), value);
  16. }
  17.  
  18. pid = fork();
  19. if (pid == 0) {
  20. pid = fork();
  21. if (pid > 0) {
  22. value += 15;
  23. printf("%d: val = %d\n", getpid(), value);
  24. }
  25. else if (pid == 0) {
  26. value /= 4;
  27. printf("%d: val = %d\n", getpid(), value);
  28. }
  29. }
  30. else {
  31. value -= 10;
  32. }
  33.  
  34. waitpid(-1, NULL, 0);
  35. printf("%d: val = %d\n", getpid(), value);
  36.  
  37. return 0;
  38. }
  39.  
Success #stdin #stdout 0.01s 5308KB
stdin
Standard input is empty
stdout
1313760: val = 2
1313760: val = 2
1313759: val = 25
1313759: val = 25
1313758: val = 0
1313755: val = 20
1313762: val = 5
1313762: val = 5
1313755: val = 20
1313761: val = 35
1313761: val = 35
1313755: val = 20
1313755: val = 10