2013-03-21 60 views
0

这里是我的代码。使用报警(3)退出程序 - C++

#include<iostream> 
int main() 
{ 
    std::string str; 
    while(true) 
    { 
    std::cout<<"enter string \n"; 
    alarm(3); 
    getline(std::cin,str); 
     // calling another function in some other class, 
      and return to here (If not entered any string in 3 sec) 
    } 
    return 0; 
} 

2秒后它退出我的程序。但是,我想继续调用另一个函数并返回到同一个getline()。可能吗?? 感谢

+0

这在您的其他问题中不止一次得到解答。 – chris 2013-03-21 07:03:00

+1

不一样-chris 观察一次,现在我想继续在同一个程序中。 反正只是在这里放下你的想法 谢谢 – 2013-03-21 08:12:21

回答

2

如果你读一个reference page of alarm你会看到:

alarm()功能将导致系统生成的过程中SIGALRM信号的按秒指定的实时秒数已经过去之后。

您可以通过使用sigaction系统调用需要这个SIGALRM信号,例如。

+1

听起来不错。你可以通过给出一个捕捉报警信号的简单代码来解释我。我没有得到那个参考(抱歉)。 谢谢 -Joachim Pileborg – 2013-03-21 07:36:15

+2

@Rajendra在我的答案中链接的'sigaction'参考文件有一个关于如何为信号设置信号处理程序的简单示例。只需输入正确的信号而不是'SIGINT',并且不要设置'SA_RESTART'标志。 – 2013-03-21 07:47:21

+0

哦.. thnq -Joachim Pileborg 我会看看并回复你..非常感谢你 – 2013-03-21 08:10:49