C++ 我可以使用控制处理程序(ctr+;c)强制中断函数吗?
在下面显示的示例代码中,我C++ 我可以使用控制处理程序(ctr+;c)强制中断函数吗?,c++,C++,在下面显示的示例代码中,我 BOOL WINAPI CtrlHandler(DWORD fdwCtrlType) { switch (fdwCtrlType) { // Handle the CTRL-C signal. case CTRL_C_EVENT: return TRUE; default: return FALSE; } } int main() { /* some initializ
BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
{
switch (fdwCtrlType)
{
// Handle the CTRL-C signal.
case CTRL_C_EVENT:
return TRUE;
default:
return FALSE;
}
}
int main()
{
/* some initializations */
while(true)
{
process_user_input();
}
}
process_user_input(...)
{
/* checks input from a bunch of user inputs*/
execute_xxx();
}
execute_xxx()
{
/* do something */
/* checks for a flag*/
while(!flag)
{
/* do something*/
}
}
在execute_xxx()函数中,假设应用程序停止在那里,正在等待一个标志,是否有办法清除已使用的资源,然后使用ctrl+c返回主函数中的while循环?标志做什么/等待什么?您可以通过CTRL+C处理程序来实现这一点,但可能有更好的方法来实现这一点。这不能通过平台无关的方式来实现。如果您询问Windows,问题并添加<代码> WINAPI >代码>标签(也请参考返回值对于<代码> CtRLGC*Engult意味着什么。如果您的资源遵循标准C++ + RAI范式,则可以在检测到标志设置时获得<代码> ExeUTTEXXXX/CODE >抛出异常。
main
函数可以将调用包装在try-catch块中。当堆栈响应异常而展开时,正确封装的资源将被释放。如果您想中断等待,最好显示您是如何等待的。只是那个循环一次又一次地迭代吗?(我不会称之为“等待”,因为它正在做一些事情。)国旗在做什么?您可以通过CTRL+C处理程序来实现这一点,但可能有更好的方法来实现这一点。这不能通过平台无关的方式来实现。如果您询问Windows,问题并添加<代码> WINAPI >代码>标签(也请参考返回值对于<代码> CtRLGC*Engult意味着什么。如果您的资源遵循标准C++ + RAI范式,则可以在检测到标志设置时获得<代码> ExeUTTEXXXX/CODE >抛出异常。main
函数可以将调用包装在try-catch块中。当堆栈响应异常而展开时,正确封装的资源将被释放。如果您想中断等待,最好显示您是如何等待的。只是那个循环一次又一次地迭代吗?(我不会称之为“等待”,因为它正在做一些事情。)