1. #inlcude<unistd.h>
    2. #include<stdio.h>
    3. #include<signal.h>
    4. #include<stdlib.h>
    5. void alrmhandler(int sig)
    6. {
    7. printf("产生一个信号");
    8. }
    9. int main()
    10. {
    11. pid_t pid;
    12. //创建一个子进程
    13. pid=fork();
    14. switch(pid)
    15. {
    16. case 0: //子进程处理
    17. {
    18. sleep(5);
    19. kill(getppid(),SIGALRM);
    20. exit(0);
    21. }
    22. break;
    23. case -1: //失败处理
    24. {
    25. perror("fork error\n");
    26. exit(0);
    27. }break;
    28. default// 父进程处理
    29. {
    30. //注册一个闹钟信号处理函数
    31. signal(SIGALRMalrmhandler);
    32. printf("父进程等待一个信号...");
    33. pause();
    34. }break;
    35. }
    36. printf("run end\n");
    37. return 0;
    38. }