本关的编程任务是补全右侧代码片段中两段Begin至End中间的代码,具体要求如下: 在 do _alarm中首先启动 5s 定时器,将 g_i4event 置为 1; 睡眠一秒,然后为信号 SIGALRM 注册信号处理函数 funcalarm ,将 g_i4event 置为 2; 在信号处理函数,将 g_i4event 置为 3。
时间: 2024-02-18 20:02:14 浏览: 67
code_snippets:完成任务的代码片段和技术
好的,我明白了。根据您的要求,我给出如下代码实现:
```c
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
int g_i4event = 0;
void funcalarm(int signo) {
g_i4event = 3;
}
void do_alarm() {
g_i4event = 1;
alarm(5);
sleep(1);
signal(SIGALRM, funcalarm);
g_i4event = 2;
}
```
在函数 `do_alarm` 中,首先将 `g_i4event` 置为 1,然后启动 5 秒的定时器 `alarm(5)`,同时将 `g_i4event` 置为 1。接着程序会睡眠 1 秒钟,为信号 SIGALRM 注册信号处理函数 `funcalarm`,并将 `g_i4event` 置为 2。在信号处理函数 `funcalarm` 中,将 `g_i4event` 置为 3。这样就完成了您的要求。
阅读全文