SO是一场狗屎秀。感谢您的搭车

问题描述 投票:0回答:5

SO是一场狗屎秀。感谢您的搭车。

c++
5个回答
7
投票

只需调用

_exit()
,即可在 LinuxWindows 上使用。它不会像
abort()
那样产生核心转储。

编辑:如果

_exit()
对您来说不够好,您可能必须针对特定平台。

在 Windows 上,您可以调用

TerminateProcess()
,据我所知,这是杀死 Windows API 公开的进程的最有力/最直接的方法(尽管如果有更强有力的方法,我很乐意了解一下)。

在 Linux 上,提高

SIGKILL
可能会更好,正如 Jeffery Thomas 建议的那样。我实际上不知道SIGKILL
是否比
_exit()
更有力/更直接。

这两种方法都是异步的。


7
投票
在兼容 POSIX 的 UNIX 系统上,

raise(SIGKILL)

 将执行您想要的操作。


对于 Windows,我首先会看的是

TerminateProcess(GetCurrentProcess(),0)

。注意:这可能会导致全局共享 DLL 出现问题。


作为最后的评论,您没有提供任何细节,但无论您尝试做什么,如果这是您的出路,那么您都以错误的方式做。


3
投票
使用

_exit()

。这将立即终止您的程序。 


1
投票
尝试在 C 中调用

abort()

 函数,或在 C++ 中调用 
std::terminate

terminate
也是 Visual C++ 中的 C 函数,但它是非标准的。)


1
投票
在 C++11 中

_Exit

(注意:大写 
E
)被指定为 §18.5/3

程序终止,不执行自动、线程或对象的析构函数 静态存储持续时间并且不调用传递给 atexit()

 的函数

如果您希望执行可能的处理程序,那么您可以调用

std::quick_exit

,它会调用已注册的处理程序,然后调用 
_Exit

© www.soinside.com 2019 - 2024. All rights reserved.