【发布时间】:2014-08-12 13:52:25
【问题描述】:
我必须捕捉 单击控制台的关闭按钮 事件,它对应于 ctrl-break 事件 SIGBREAK 但显然有一种超时,它不允许我再做任何事情超过 5 秒,在什么程序似乎被中止之后(所以消息 “正确结束!” 永远不会发生)。
如何强制系统执行关闭操作直到结束(或将超时时间延长至 60 秒)?
注意:用同样的方法,我可以在doStuffs();之前使用fflush(stdout);成功处理CTRL+C事件(SIGINT)
注意 2:我的代码基于这个答案:https://stackoverflow.com/a/181594/1529139
#include <csignal>
void foo(int sig)
{
signal(sig, foo); // (reset for next signal)
// do stuffs which takes aboutly 15 seconds
doStuffs();
cout << "Properly ended !";
}
int main(DWORD argc, LPWSTR *argv)
{
signal(SIGBREAK, foo);
myProgramLoop();
}
【问题讨论】:
标签: c++ windows process signals