父进程建立信号处理函数,处理子进程发送的ALARM信号 ,父进程建立一个子进程,子进程不断的读取键盘,读到数据后给父进程发送ALARM信号 当父进程收到ALARM信号,就输出“child procee have read some data”。用switch写
时间: 2024-05-10 18:15:22 浏览: 133
可以参考下面的代码,其中使用了 `signal()` 函数来注册信号处理函数,并使用了 `fork()` 函数来创建子进程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
void handle_alarm(int sig)
{
printf("child process have read some data\n");
}
int main()
{
// 注册信号处理函数
signal(SIGALRM, handle_alarm);
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
} else if (pid == 0) {
// 子进程
char buffer[256];
while (1) {
scanf("%s", buffer);
// 发送 ALARM 信号给父进程
kill(getppid(), SIGALRM);
}
} else {
// 父进程
while (1) {
sleep(1);
printf("waiting for data...\n");
}
}
return 0;
}
```
在子进程中,不断读取键盘输入,并使用 `kill()` 函数向父进程发送 ALARM 信号。在父进程中,使用无限循环等待 ALARM 信号的到来,并输出相应的信息。
阅读全文