下面的代码没有错误但是我希望它在#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信号。如果我们忽略或没有捕获此信号,则其默认操作是终止 过程
答案 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;
}