2013-03-21 61 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