编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止。
时间: 2024-02-24 17:00:27 浏览: 62
以下是实现进程的软中断通信的C语言程序:
```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(0);
}
int main() {
pid_t pid = fork();
if (pid == 0) { // 子进程
signal(SIGUSR1, child_handler); // 注册信号处理函数
while (1) {
sleep(1); // 子进程持续运行
}
} else if (pid > 0) { // 父进程
sleep(2); // 睡眠2秒后发送信号
kill(pid, SIGUSR1); // 向子进程发送信号
wait(NULL); // 等待子进程终止
printf("Child process terminated.\n");
} else { // fork失败
printf("Failed to create child process.\n");
return -1;
}
return 0;
}
```
程序首先使用系统调用 `fork()` 创建子进程,然后父进程睡眠2秒后,向子进程发送 `SIGUSR1` 信号。子进程注册了信号处理函数 `child_handler()`,一旦接收到 `SIGUSR1` 信号,就会输出指定信息并终止进程。父进程使用 `wait()` 等待子进程终止后输出指定信息并终止进程。
阅读全文