2. 编写程序child.c,实现如下功能,假设父进程先执行,父进程显示3行字符串;父进程向子进程发送软中断信号,等待子进程终止后,父进程输出结束信息”OK”,然后终止执行。子进程循环显示“I am a child”,当接收到父进程发来的软信号后会停止循环,显示“child exited”并终止执行。 缩短一点
时间: 2023-11-24 10:06:30 浏览: 55
```
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void sig_handler(int signo) {
printf("child exited\n");
exit(0);
}
int main() {
pid_t pid;
int i;
if ((pid = fork()) == -1) {
perror("fork error");
exit(1);
} else if (pid == 0) {
signal(SIGINT, sig_handler);
while (1) {
printf("I am a child\n");
sleep(1);
}
} else {
for (i = 0; i < 3; i++) {
printf("Parent message %d\n", i+1);
}
sleep(1);
printf("Sending SIGINT to child process...\n");
kill(pid, SIGINT);
wait(NULL);
printf("OK\n");
exit(0);
}
return 0;
}
```