当前位置:  技术问答>linux和unix

kill -9 pid 我怎么获得它的信号??

    来源: 互联网  发布时间:2016-03-31

    本文导语:  signal(  ) 怎么获得kill -9 pid的信号.. 就是在我执行kill的时候怎么得到他信号. 能给个小例子万分感谢... | 呵呵,楼上不是很多专家都回答了吗?fierygnu可是很厉害的。 不要考虑kill -9的事...

signal(  )
怎么获得kill -9 pid的信号..

就是在我执行kill的时候怎么得到他信号.

能给个小例子万分感谢...

|
呵呵,楼上不是很多专家都回答了吗?fierygnu可是很厉害的。

不要考虑kill -9的事,如果真有人这么做,那你也没办法,因为这样做本身就是非常规的。
一般的kill不带-9参数,或者带SIGTERM参数:
kill -TERM xxx
这样的kill实际上就是给进程发信号,这些信号是可以捕捉的(SIGTERM,SIGINT,...)
kill -l (小写的L)可以列出所有的信号,可以看到
kill -9等价于kill -GKILL
而kill -TERM 就是kill -15

通常程序需要捕捉的信号有
- SIGTERM:正常退出,清理数据
- SIGHUP,并不退出,通常用来重新装载配置文件,进行某些初始化
- SIGINT,处理Ctrl-C
- SIGCHLD,子进程退出

如前所述,SIGKILL和SIGSTOP无需捕捉,也无法捕捉,他们是用来保证系统有办法强制杀掉异常的进程。
当然如果你的程序一定要强调不能被杀掉(实际上没有程序会这样做,除了一些内核的进程),你只能修改内核了。

(注:SIGSTOP是19而非15)

|

#include 


int main(int argc, char **argv)
{
...
signal(SIGKILL, sig_handler);
...
}

void sig_handler(int  signum)
{
...
}

|
kill -9发送的是SIGKILL信号,该信号无法捕捉。

|
//faint

不是雨想哭,是我想哭。。。

说了这么多遍了,还不清楚吗?
再怎么多谢我也没办法。。。

|
不允许用户捕获SIGKILL信号的原因其实很简单:如果允许捕获的话就能创建出一个杀不死的进程。

|

找到了。在signal系统调用的时候有判断,确实不能通过signal系统调用来屏蔽SIGKILL与SIGSTOP信号。

int
do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact)
{
struct k_sigaction *k;

if (sig  _NSIG ||
    (act && (sig == SIGKILL || sig == SIGSTOP)))
return -EINVAL;
.....
}


看是否有其他途径吧。

|
SIGKILL和SIGSTOP都不能被捕获
即9 15

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 使用pb 使用 odbc連接資料庫,出現死鎖,在syssession中顯示pid 1024 ,該如何kill該pid
  • 想根据ps -ef|grep XXXX中得到的列表的PID,Kill掉进程.请问如何写Shell.
  • 一个线程能用pthread_kill(pid,SIGHUP)将另一个线程挂起么?
  • 写一个Liunx 下的java 程序,怎样才能使kill pid的方法杀不死他呢?
  • 紧急问题:我启动一个java程序之后用ps一看,为和显示我启动了多个程序?然后我kill-9第一个pid之后,又全部没了
  • kill(1) 和 kill(2)是啥意思
  • socket发送端、接收端同一机器,kill掉接收端进程,发送端也被kill?
  • 为什么我的进程kill不掉?
  • Kill -3 重定向问题
  • 关于kill的问题
  • kill命令注意?
  • oracle iis7站长之家
  • 求一小脚本,查找进程号然后kill掉
  • kill函数何时返回
  • 紧急求助,关于kill进程 , 大家帮帮忙啊 !!!
  • ssh到其他主机再kill进程脚本问题
  • 为什么用KILL杀不死进程啊!
  • kill命令的疑惑
  • 怎样用一条kill命令杀掉一批进程?
  • UNIX下用 sleep 时,进程不回响应,kill 都不行,都没有别的办法?
  • 如何将telnet我机器上的用户kill掉
  • Kill 脚本编写!
  • linux环境下如何kill某java应用程序??
  • 該進程為何kill 不掉啊
  • 为什么进程kill不掉?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3