编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止
时间: 2024-02-24 17:00:38 浏览: 76
(修改版)实现进程的软中断通信。要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断
4星 · 用户满意度95%
好的,我可以帮你编写这段程序。以下是代码:
```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()`等待子进程的结束,然后输出指定信息并退出。
阅读全文