Advertisement
Guest User

fawa

a guest
May 28th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. /* Ingrida Mantvydas Pleiris */
  2. /* Failas: manple2_signal01a.c */
  3. /* */
  4. /* manple2_signal01: tevo procesas sukuria vaiko procesa */
  5. /* ir laukia vaiko proceso darbo pabaigos signalo */
  6. /* Jo sulaukes darba baigia pats */
  7. /* Vaiko procesas isspausdina pranesima ir palaukes 3s baigia darba */
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <signal.h>
  11. #include <stdio.h>
  12. #include <sys/wait.h>
  13. #include <stdbool.h>
  14. void il_catch_CHLD(int); /* signalo apdorojimo f-ja */
  15. void il_catch_ALRM(int); /* signalo apdorojimo f-ja */
  16. void il_child(void); /* vaiko proceso veiksmai */
  17. void il_parent(int pid); /* tevo proceso veiksmai */
  18. void il_child(void) {
  19. printf(" child: I'm the child\n");
  20. alarm(3);
  21. signal(SIGALRM, il_catch_ALRM);
  22. sleep(6);
  23. printf(" child: I'm exiting\n");
  24. exit(123);
  25. }
  26. void il_parent(int pid) {
  27. printf("parent: I'm the parent\n");
  28. sleep(10);
  29. printf("parent: exiting\n");
  30. }
  31. void il_catch_CHLD(int snum) {
  32. int pid;
  33. int status;
  34. pid = wait(&status);
  35. printf("parent: child process (PID=%d) exited with value %d\n", pid, status);
  36. }
  37. void il_catch_ALRM(int snum) {
  38. signal(SIGALRM, il_catch_ALRM);
  39. printf("Parent caught signal with number: %d",snum);
  40. }
  41. int main(int argc, char **argv) {
  42. int pid; /* proceso ID */
  43. printf( "(C) 2017 Mantvydas Pleiris, %s\n", __FILE__ );
  44. signal(SIGCHLD, il_catch_CHLD); /* aptikti vaiko proc pasibaigima ir apdoroti */
  45. switch (pid = fork()) {
  46. case 0:
  47. /* fork() grazina 0 vaiko procesui */
  48. il_child();
  49. break;
  50. default: /* fork() grazina vaiko PID tevo procesui */
  51. il_parent(pid);
  52. break;
  53. case -1: /* fork() nepavyko */
  54. perror("fork");
  55. exit(1);
  56. }
  57. exit(0);
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement