编一个UNIX平台上的C程序。在程序的开始部分设置信号SIGUSR1的处理方式为执行delete程序。在创建子进程后,父进程向子进程发送信号SIGUSR1,并在子进程终止后显示子进程传来的返回参数。子进程发现已收到信号,就执行信号SIGUSR1所对应的处理

admin2016-05-14  43

问题 编一个UNIX平台上的C程序。在程序的开始部分设置信号SIGUSR1的处理方式为执行delete程序。在创建子进程后,父进程向子进程发送信号SIGUSR1,并在子进程终止后显示子进程传来的返回参数。子进程发现已收到信号,就执行信号SIGUSR1所对应的处理程序delete,该程序删除当前目录下的core文件,如删除失败,终止本进程,传给父进程的参数为1,否则从delete程序返回后,子进程显示Success,传给父进程的参数为0。

选项

答案实现该功能的C程序见程序清单15-4。 程序清单15-4:signal.c #include<sys/types.h> #include<signal.h> main() { int pid,status; void delete(); signal(SIGUSR1,delete);/*预置信号处理程序*/ if(pid=fork()){/*创建子进程*/ kill(pid,SIGUSR1);/*发送信号*/ wait(&status);/*等待子进程终止*/ printf("status=%d\n",status), }else{ sleep(10), printf("Chiid:Success.\n"); exit(0); } } void delete() { int ret; ret=unlink(core);/*删除当前目录下的core文件*/ if(ret==-1) exit(1), return; }。

解析
转载请注明原文地址:https://kaotiyun.com/show/VYNx777K
本试题收录于: 操作系统题库理工类分类
0

最新回复(0)