我的C++应用程序会定期崩溃。它会在终端中写出终止并停止运行。我不知道原因是什么(GDB不是解决方案;它是一个多线程应用程序,错误出现在大量线程上,只是GDB无法处理它们,因为性能低下)。
在CentOS Linux上,退出代码143代表什么?它是否包含有关崩溃原因的信息?
在CentOS Linux上,退出代码143代表什么?它是否包含有关崩溃原因的信息?
143通常意味着应用程序捕获了SIGTERM
信号,表示该进程已被杀死。这可能是因为另一个进程将其杀死,或者操作系统由于使用过多内存或其他资源等原因而将其杀死。没有更多信息,很难知道具体原因。
有一些退出码已经有了定义或者普遍认可的意义。
对于143,它是128 + 15的结果,这意味着程序因为信号15,即SIGTERM而死亡。
根据上表,退出码1-2、126-165和255具有特殊含义,所以应该避免使用它们作为用户指定的退出参数。
128+KillingSignal
的伪装退出码意味着程序被某个KillingSignal
杀死。
杀死信号#15是SIGTERM
(尝试使用kill -l 15
,kill -l $((143-128))
甚至kill -l 143
(kill命令知道这种shell约定)来获取信号的书面描述(在这种情况下是TERM)。SIGTERM
是如果没有指定其他信号,则由kill
实用程序发送的默认信号。它是一个基本的终止请求。
很可能是某个用户或某个应用程序将其杀死(SIGTERM
是可捕获的信号——如果内核要杀死(内存不足或安全违规),它不会那么温和,而是发送始终无法捕获的SIGKILL
或特殊的无法捕获的SIGSYS
)。更不太可能的是,程序自己使用SIGTERM
退出,而非常非常不太可能的是,违反惯例,程序以实际值143退出。
dmesg
命令)可能会有一些信息。 - jotikSIGTERM
信号并触发正确的关闭序列。 - Bodo Hugo Barwich