signal(SIGUSR1, SIG_IGN) 的意思

忽略对SIGUSR1的响应 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. `#include<stdio.h>`:头文件,包含标准输入输出函数。 2. `#include<signal.h>`:头文件,包含信号处理函数。 3. `#include<unistd.h>`:头文件,包含系统调用函数。 4. `int pid1,pid2;`:定义两个进程的 ID。 5. `int endflag=0,pf1=0,pf2=0;`:定义结束标志和两个进程的进程状态。 6. `void intdelete()`:定义信号处理函数。 7. `kill(pid1,16);`:向进程 pid1 发送信号 16。 8. `kill(pid2,17);`:向进程 pid2 发送信号 17。 9. `endflag=1;`:将结束标志设置为 1。 10. `void int1()`:定义信号处理函数。 11. `printf("child process 1 is killed by parent!\n");`:输出提示信息。 12. `exit(0);`:进程退出。 13. `void int3()`:定义信号处理函数。 14. `printf("child process 2 is killed by parent!\n");`:输出提示信息。 15. `exit(0);`:进程退出。 16. `signal(SIGINT,SIG_IGN);`:忽略信号 SIGINT。 17. `signal(SIGQUIT,SIG_IGN);`:忽略信号 SIGQUIT。 18. `while((pid1=fork())==-1);`:创建子进程 pid1,如果创建失败则一直循环。 19. `if(pid1==0)`:判断是否为子进程 pid1。 20. `printf("p1\n");`:输出提示信息。 21. `signal(SI_USER,int1);`:注册信号 SI_USER 的信号处理函数为 int1。 22. `signal(16,SIG_IGN);`:忽略信号 16。 23. `pause();`:挂起进程,等待信号。 24. `exit(0);`:进程退出。 25. `else`:如果不是子进程 pid1。 26. `while((pid2=fork())==-1);`:创建子进程 pid2,如果创建失败则一直循环。 27. `if(pid2==0)`:判断是否为子进程 pid2。 28. `printf("p2\n");`:输出提示信息。 29. `signal(SIGUSR2,int3);`:注册信号 SIGUSR2 的信号处理函数为 int3。 30. `signal(17,SIG_IGN);`:忽略信号 17。 31. `pause();`:挂起进程,等待信号。 32. `exit(0);`:进程退出。 33. `else`:如果不是子进程 pid2。 34. `printf("parent\n");`:输出提示信息。 35. `signal(SIGINT,intdelete);`:注册信号 SIGINT 的信号处理函数为 intdelete。 36. `waitpid(-1,&exitpid,0);`:等待任意子进程退出。 37. `printf("parent process is killed!\n");`:输出提示信息。 38. `exit(0);`:进程退出。 该程序创建了三个进程:一个父进程和两个子进程,父进程会向两个子进程分别发送信号 16 和 17,子进程收到信号后会输出提示信息并退出,父进程会等待任意子进程退出后输出提示信息并退出。预判输出结果为: ``` p1 p2 parent child process 1 is killed by parent! parent process is killed! ``` 分析:首先创建了子进程 pid1,输出了 "p1",然后创建了子进程 pid2,输出了 "p2",然后输出了 "parent"。父进程向子进程 pid1 发送信号 16,子进程 pid1 收到信号后输出了 "child process 1 is killed by parent!" 并退出。父进程等待子进程退出后输出了 "parent process is killed!" 并退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值