1、编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止: This is father process is Killed!
时间: 2024-02-25 13:51:42 浏览: 51
请注意,我是一个语言模型,无法真正运行代码,以下是C语言程序的示例代码,仅供参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void child_handler(int sig);
int main() {
pid_t pid;
int status;
pid = fork();
if (pid < 0) {
printf("Fork failed!\n");
exit(1);
} else if (pid == 0) {
signal(SIGUSR1, child_handler);
printf("Child process is waiting for signal...\n");
while (1) {
sleep(1);
}
} else {
printf("Father process is sleeping...\n");
sleep(2);
printf("Father process is sending signal to child process...\n");
kill(pid, SIGUSR1);
waitpid(pid, &status, 0);
printf("This is father process is killed!\n");
exit(0);
}
}
void child_handler(int sig) {
printf("Child is killed by father!\n");
exit(0);
}
```
在上述程序中,我们使用 `fork()` 创建了一个子进程,子进程等待接收信号,父进程等待2秒后向子进程发送 `SIGUSR1` 信号,子进程捕获到信号后输出信息并终止,父进程等待子进程终止后输出信息并终止。注意,在子进程中需要注册信号处理函数 `child_handler()`,以便捕获信号并输出信息。
阅读全文