我的测试程序昨天收到sigkill信号推出了,请问什么情况下操作系统会给应用程序发送sigkill信号?
by UnixStudier - C/C++ - 2008-12-15 10:44:48 阅读(1288) 回复(3)
请问sigkill信号如何捕获啊? 程序在后台运行,想在执行 kill -9 pid 的时候,程序做一些处理工作后才退出,应该怎样处理呢? 试了很多方法,进程总是直接就被杀死了,无法处理其他收尾工作。 查了一些资料,说sigkill信号是无法被捕获的,但有些资料又说用某些方法可以处理。 请教,这种情况下应该用什么方法?:roll:
[code]
#include
代码: #include "my.h" static void killfun(int); int main(void) { if(signal(SIGINT,SIG_IGN) == SIG_ERR) perror("can't catch SIGINT"); if(signal(sigkill,killfun) == SIG_ERR) perror("can't catch sigkill"); while(1) { printf("Who can kill me !! hahaha!\n"); } } static void killfun(int signo) { printf("haha! kill can kill me"); } 编译后运行,用kill 杀掉后...
例如
[code]
#include
不知道是exit()还是_exit(), 我在一个小程序里用atexit()注册了个函数,是输入一句话。 然后让它在后台运行,给它发了个kill -sigkill 信号。结果那句话没输出,难道说退出时不是调用了exit()? 其实对于这两个函数的区别也不是很清楚,请教这里的高手了。呵呵