fork download
  1. #include <stdio.h>
  2. #include <pthread.h>
  3. #include <sys/wait.h> //wait
  4. #include <unistd.h> //fork
  5. int value = 0;
  6. void *runner(void *param);
  7.  
  8. int main(int argc, const char * argv[]) {
  9. // insert code here...
  10. pid_t pid, pid1 = 0, pid2;
  11. pthread_t tid;
  12. pthread_attr_t attr;
  13. pid = fork();
  14. printf("PID line 24 in main process %d\n", pid);
  15.  
  16. if (pid == 0) //child process
  17. {
  18. pid1 = fork();
  19. printf("PID line 28 inside child process %d\n", pid);
  20. printf("PID_1 line 28 inside child process %d\n", pid1);
  21. pthread_attr_init(&attr);
  22. pthread_create(&tid, &attr, runner, NULL);
  23. printf("Thread created\n");
  24. pthread_join(tid, NULL);
  25. }
  26. pid2 = fork();
  27. printf("PID line 37 in main process %d\n", pid);
  28. printf("PID_1 line 37 in main process %d\n", pid1);
  29. printf("PID_2 line 37 in main process %d\n", pid2);
  30. return 0;
  31. }
  32. void *runner(void *param)
  33. {
  34. value = 5;
  35. pthread_exit(0);
  36. }
  37.  
  38.  
Success #stdin #stdout 0s 5564KB
stdin
Standard input is empty
stdout
PID line 24 in main process 8686
PID line 37 in main process 8686
PID_1 line 37 in main process 0
PID_2 line 37 in main process 8687
PID line 24 in main process 8686
PID line 37 in main process 8686
PID_1 line 37 in main process 0
PID_2 line 37 in main process 0
PID line 24 in main process 0
PID line 28 inside child process 0
PID_1 line 28 inside child process 8688
Thread created
PID line 37 in main process 0
PID_1 line 37 in main process 8688
PID_2 line 37 in main process 8690