unix中的报警功能

时间:2016-05-19 12:05:02

标签: c signals

下面的代码没有错误但是我希望它在#5; 5秒(闹钟函数中的参数)之后应该自行终止'。我想我误解了警报行为。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/signal.h>
#define endl printf("\n")
int main(int argc, char *argv[])
{
int rc;
printf("Waiting for IOs");
getchar();
rc=alarm(5);
printf("value of rc is %d", rc);
endl;
}

根据定义,警报功能允许我们设置将在未来指定时间到期的计时器。当计时器 到期时,生成SIGALRM信号。如果我们忽略或没有捕获此信号,则其默认操作是终止 过程

2 个答案:

答案 0 :(得分:0)

你错过了等待信号的东西,例如致电sigsupsend(2)pause(2)作为main的最后一条陈述。您也可以使用sleep(3)poll(2)等。或者进行一些阻塞I / O,或进行一些冗长的计算。

另请阅读time(7)

答案 1 :(得分:0)

我现在修好了,在去getchar()之前我不得不打电话给警报,所以下面现在很好。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/signal.h>
#define endl printf("\n")
int main(int argc, char *argv[])
{
int rc;
printf("Waiting for IOs");
**rc=alarm(5);**
**getchar();**

printf("value of rc is %d", rc);
endl;
}