当前位置: 技术问答>linux和unix
请问如何实现用kill 1234杀不死自己写的程序?假定1234是自己进程ID
来源: 互联网 发布时间:2016-10-06
本文导语: 我用下面函数实现的,但不起作用。函数也调用了,因为我在系统日志中看到了Someone attemp to kill suServer!,但进程还是被杀死了。 请问还要做些什么工作? void sigterm_handler(int sig) { syslog(LOG_INFO, "Someone attemp to ...
我用下面函数实现的,但不起作用。函数也调用了,因为我在系统日志中看到了Someone attemp to kill suServer!,但进程还是被杀死了。
请问还要做些什么工作?
void sigterm_handler(int sig)
{
syslog(LOG_INFO, "Someone attemp to kill suServer!");
}
请问还要做些什么工作?
void sigterm_handler(int sig)
{
syslog(LOG_INFO, "Someone attemp to kill suServer!");
}
|
喔。明白,估计LZ这样写的:
#include
#include
#include
#include
#include
void
sigterm_handler(int sig) {
syslog(LOG_INFO, "Someone attemp to kill suServer!");
}
int
main() {
if (signal(SIGTERM, sigterm_handler) == SIG_ERR) {
printf("signal error:n", strerror(errno));
return (-1);
}
// for (;;) {
pause();
// }
return (0);
}
|
if( msgrcv( msqid, &msg, 256, 1, 0 )==-1 ){
writeLog("msgrcv errorn");
exit(1);
}
-------------
信号发生时,中断了msgrcv调用,导致msgrcv返回-1,然后就执行了exit(1)了,程序自然退出了
如果不想退出,自己再加个判断
if( msgrcv( msqid, &msg, 256, 1, 0 )==-1 ){
writeLog("msgrcv errorn");
if( errno != EINTR ) exit(1);
}
writeLog("msgrcv errorn");
exit(1);
}
-------------
信号发生时,中断了msgrcv调用,导致msgrcv返回-1,然后就执行了exit(1)了,程序自然退出了
如果不想退出,自己再加个判断
if( msgrcv( msqid, &msg, 256, 1, 0 )==-1 ){
writeLog("msgrcv errorn");
if( errno != EINTR ) exit(1);
}
|
syslog函数 不是用来防止被杀的 而是记录日志的。
直接kill pid的话 发送的SIGTERM信号 你在程序里要用代码捕获该信号 然后忽略掉
具体代码是怎么样的不懂 不做开发的。
比如常用的还有下面这样的
kill -9 pid 或者kill -KILL pid 对应的信号是SIGKILL
kill -1 pid 或者kill -HUP pid 对应的信号是SIGHUP
在命令行里输入 kill -l 查看信号一览
直接kill pid的话 发送的SIGTERM信号 你在程序里要用代码捕获该信号 然后忽略掉
具体代码是怎么样的不懂 不做开发的。
比如常用的还有下面这样的
kill -9 pid 或者kill -KILL pid 对应的信号是SIGKILL
kill -1 pid 或者kill -HUP pid 对应的信号是SIGHUP
在命令行里输入 kill -l 查看信号一览
|
不是吧 楼主直接kill pid
这样是发送的SIGTERM信号吧。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。