编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止
时间: 2024-02-24 07:00:38 浏览: 73
进程的软中断通信
好的,我可以帮你编写这段程序。以下是代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void child_handler(int sig) {
printf("Child is Killed by father!\n");
exit(EXIT_SUCCESS);
}
int main() {
pid_t pid;
pid = fork();
if (pid < 0) {
perror("fork error");
exit(EXIT_FAILURE);
} else if (pid == 0) {
signal(SIGTERM, child_handler);
while (1) {
sleep(1);
}
} else {
sleep(2);
kill(pid, SIGTERM);
wait(NULL);
printf("Child process is terminated.\n");
exit(EXIT_SUCCESS);
}
}
```
这段程序使用了系统调用`fork()`创建了一个子进程,并且父进程等待2秒后使用了系统调用`kill()`向子进程发送了终止信号`SIGTERM`。子进程使用了函数`signal()`注册了一个信号处理函数`child_handler()`,当它接收到终止信号`SIGTERM`时,就会输出指定信息并退出。父进程使用了系统调用`wait()`等待子进程的结束,然后输出指定信息并退出。
阅读全文