编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止:Father is Killed!
时间: 2024-02-25 08:51:18 浏览: 54
下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void child_handler(int signum)
{
printf("Child is Killed by father!\n");
exit(0);
}
int main()
{
pid_t pid;
pid = fork();
if (pid == -1) {
printf("Fork failed.\n");
exit(1);
}
if (pid == 0) { // 子进程
signal(SIGINT, child_handler); // 注册信号处理函数
while (1) { // 子进程一直等待信号
sleep(1);
}
} else { // 父进程
sleep(2); // 睡眠2秒
printf("Sending signal to child.\n");
kill(pid, SIGINT); // 向子进程发送信号
wait(NULL); // 等待子进程结束
printf("Father is Killed!\n");
}
return 0;
}
```
运行结果:
```
Sending signal to child.
Child is Killed by father!
Father is Killed!
```
阅读全文