1、编写一段C语言程序,使其实现进程的软中断通信。 要求:使用系统调用fork( )创造一个进程,父进程进程睡眠2秒后,用系统调用Kill( ) 向子进程P发出信号,子进程P捕捉到信息后输出下列信息终止: Child is Killed by father! 父进程等待子进程终止后,输出如下的信息后终止。
时间: 2024-02-24 10:00:33 浏览: 51
以下是实现要求的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/wait.h>
void child_handler(int signum) {
printf("Child is Killed by father!\n");
exit(0);
}
int main() {
pid_t pid;
int status;
pid = fork();
if (pid < 0) {
printf("Failed to fork a child process!\n");
exit(1);
} else if (pid == 0) {
signal(SIGINT, child_handler);
while(1) {
sleep(1);
}
} else {
printf("Parent process is sleeping for 2 seconds...\n");
sleep(2);
printf("Sending signal to the child process...\n");
kill(pid, SIGINT);
wait(&status);
printf("Child process has exited with status %d.\n", status);
}
return 0;
}
```
程序中,通过调用 `fork()` 系统调用创建了一个子进程。父进程等待2秒后,使用 `kill()` 系统调用向子进程发送 `SIGINT` 信号,子进程接收到信号后会执行 `child_handler()` 函数,输出提示信息并调用 `exit()` 函数退出进程。父进程接收到子进程退出的信号后,调用 `wait()` 系统调用等待子进程退出,并输出子进程退出的状态码。
阅读全文