如何立即终止我的程序(使用代码) 。
(我没有找到答案,说这不是犹太人。我知道它不是。)
编辑:寻找Windows和Linux解决方案。
EDIT2:我在Windows上尝试exit
,_exit
,abort
和terminate
但没有成功。
EDIT3:虽然我还没有访问Linux机器,但我能够使用以下代码成功终止我的Windows程序:
int pid = _getpid();
char buff[256];
sprintf(buff, "taskkill /pid %d /f", pid);
system(buff);
答案 0 :(得分:7)
只需致电Linux和Windows上的_exit()
即可。它不会产生像abort()
那样的核心转储。
修改:如果_exit()
不够好,您可能需要针对特定平台。
在Windows上,您可以调用TerminateProcess()
,据我所知,这是杀死Windows API公开的进程的最有力/最直接的方法(尽管如果有一个更强大的方法我会喜欢了解它。)
在Linux上,提升SIGKILL
可能会更好,suggested by Jeffery Thomas。我实际上不知道SIGKILL
是否比_exit()
更强大/更直接。
这两种方法都是异步的。
答案 1 :(得分:7)
在符合POSIX标准的UNIX系统上,raise(SIGKILL)
可以执行您想要的操作。
对于Windows,TerminateProcess(GetCurrentProcess(),0)
是我首先要看的。注意:这可能会导致全局共享DLL的问题。
作为最后的评论,你没有提供任何细节,但是无论你想做什么,如果这是你的出路,那你就是错误的做法。
答案 2 :(得分:3)
使用_exit()
。这将立即杀死你的程序。
答案 3 :(得分:1)
尝试在C中调用abort()
函数,或在C ++中调用std::terminate
(terminate
也是Visual C ++中的C函数,但它是非标准的。)
答案 4 :(得分:1)
在C ++ 11中_Exit
(注意:大写E
)被指定为§18.5/ 3
“程序终止而不执行自动,线程或的对象的析构函数 静态存储持续时间且没有调用函数传递给
atexit()
如果您希望执行可能的处理程序,则可以调用std::quick_exit
来调用已注册的处理程序,然后调用_Exit
。