父进程建立信号处理函数,处理子进程发送的ALARM信号 ,父进程建立一个子进程,子进程不断的读取键盘,读到数据后给父进程发送ALARM信号 当父进程收到ALARM信号,就输出“child procee have read some data”。用switch
时间: 2024-05-10 16:15:22 浏览: 179
下面是一个可能的实现,注意其中的注释:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
void handle_alarm(int sig) {
printf("child process have read some data\n");
}
int main() {
pid_t pid;
int status;
// 建立信号处理函数
signal(SIGALRM, handle_alarm);
switch (pid = fork()) {
case -1:
perror("fork");
exit(EXIT_FAILURE);
case 0: // 子进程
while (1) {
char ch = getchar();
if (ch == EOF) {
exit(EXIT_SUCCESS);
}
// 给父进程发送ALARM信号
kill(getppid(), SIGALRM);
}
break;
default: // 父进程
while (1) {
// 每隔1秒钟设置一个ALARM信号
alarm(1);
// 等待子进程的信号
pause();
}
wait(&status);
break;
}
return 0;
}
```
阅读全文