强制应用程序进行核心转储和退出的正确方法是什么?

Mur*_*uru 6 c c++ signals core

我刚刚遇到一些使用kill系统调用向应用程序发送SIGSEGV信号的代码.这背后的理由是,这将迫使应用程序进行核心转储和退出.这对我来说似乎是错的,这是正常的做法吗?

edA*_*a-y 8

如果您希望生成核心转储,SIGQUIT是发送到程序的正确信号.kill是发送信号的正确命令行程序(它当然命名不佳,因为并非所有信号都会杀死程序).

请注意,您不应向程序发送随机信号,并非所有信号都会产生核心转储.其中许多将由程序本身处理,消耗,忽略或诱导其他处理.因此发送SIGSEGV是错误的.


海湾合作委员会说:http: //www.gnu.org/s/libc/manual/html_node/Termination-Signals.html

POSIX/Unix说:http: //pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html


Ern*_*ill 6

是.kill有点错误 - 它可以发送任何信号.有许多用途kill不会导致该过程被杀死!

  • +1:kill -1通常用于发送SIGHUP,传统上会导致使用此功能编写的程序重新加载其配置.(例如:sendmail,init等) (4认同)