`

signal 0 test Kill

阅读更多

上篇文章里列举出了常用的kill signal ,但是没有对于signal 0的描述,这里总结下

首先看下这篇文章  http://www.linuxjournal.com/content/monitoring-processes-kill

Monitoring Processes with Kill

If you have a process ID but aren't sure whether it's valid, you can use the most unlikely of candidates to test it: the kill command. If you don't see any reference to this on the kill(1) man page, check the info pages. The man/info page states that signal 0 is special and that the exit code from kill tells whether a signal could be sent to the specified process (or processes).

So kill -0 will not terminate the process, and the return status can be used to determine whether a process is running. For example:

 $ echo $$     # show our process id
 12833
 $ /bin/bash   # create new process
 $ echo $$     # show new process id
 12902
 $ kill -0 12902
 $ echo $?     # exists, exit code is 0
 0
 $ exit        # return to previous shell
 $ kill -0 12902
 bash: kill: (12902) - No such process
 $ echo $?     # doesn't exist, exit code is 1
 1

Many UNIX dæmons store their process IDs in a file in /var/run when they are started. Using kill -0 to test the pid is a lot easier than parsing ps output. For example, to test whether cron is running, do the following:

 

 # kill -0 $(cat /var/run/cron.pid)
 # echo $?
 0

下面的评论说出了重点:

Signal 0 not only tests for existance, it also tests for permissions, so to speak. "Am I allowed to send a singal to a given PID?"

 

再来看下这篇帖子

http://www.linuxquestions.org/questions/linux-newbie-8/what-does-kill-0-pid-do-651484/

 

 

it does nothing, but the exit code of your "kill -0 PID" command just returns 0 if you can send a signal to PID, and returns 1 if you can't (don't have access or invalid PID)
 

最后看下kill的文档


http://linux.die.net/man/2/kill

http://pubs.opengroup.org/onlinepubs/009695399/functions/kill.html

 

man kill page

0          0   n/a       exit code indicates if a signal may be sent
分享到:
评论
1 楼 di1984HIT 2015-03-06  
系的很好

相关推荐

    test_pthread_kill测试程序_

    在这个"test_pthread_kill测试程序"中,我们将深入探讨`pthread_kill`的用法、工作原理以及如何通过编写测试程序来验证其功能。 首先,`pthread_kill`函数的原型如下: ```c int pthread_kill(pthread_t thread, ...

    docker-signal-test:测试 `docker run` 是否正确处理信号

    $ docker run --rm=true docker-signal-test ./signal_printer.sh Waiting for a signal... 外壳 2: $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9650d1f6535d docker-

    signal-bot:Signal的简单bot框架

    要停止漫游器,请使用Ctrl + C中断或kill -2以使其关闭并从Signal服务正常断开连接。 要对监听器进行试运行,请使用signal-bot --test 。 这将启动一个简单的输入循环,该循环将您的消息发送到bot并将响应发送到...

    python subprocess 杀掉全部派生的子进程方法

    p.send_signal(signal.CTRL_C_EVENT) except AttributeError: # 如果信号未定义,则直接终止 p.terminate() def main(): cmd = ['notepad.exe'] # 替换为你想要执行的命令 p = subprocess.Popen(cmd, ...

    keil MDK的信号函数

    Keil MDK信号函数 Keil MDK的信号函数是一种...3. 删除信号函数,例如:signal kill test 或者 kill func test。 Keil MDK的信号函数是一种强大的工具,用于模拟和测试外部事件,帮助开发者更好地测试和调试软件。

    start-stop-daemon

    linux系统命令start-stop-...or <schedule> may be just , meaning <signal>/<timeout>/KILL/ Exit status: 0 = done 1 = nothing done (=> 0 if --oknodo) 3 = trouble 2 = with --retry, processes wouldn't die

    自己整理的Linux基础编程

    - 示例:`kill -s SIGNAL 4609`,终止PID为`4609`的进程。 - **获取帮助**: - `man [命令]`:查看命令的手册页。 - 示例:`man ping`,查看`ping`命令的使用方法。 #### 十五、文本编辑器命令 - **Vi编辑器模式...

    Linux期末考试题整理综合.pdf

    * 信号的处理:使用 signal 函数处理信号,例如:`signal(SIGUSR1, p_action)` * 信号的发送:使用 kill 函数发送信号,例如:`kill(pid, SIGUSR1)` * 信号的处理函数:p_action 函数和 c_action 函数用于处理信号 ...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    升级了 0 个软件包,新安装了 28 个软件包,要卸载 0 个软件包,有 737 个软件包未被升级。 需要下载 3,425 kB 的软件包。 解压缩后会消耗掉 13.0 MB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 ...

    用Java thread dump 去分析程序的问题

    在"main"线程的堆栈跟踪中,我们可以看到test.method1()方法在test.java的第10行被调用,而这个调用发生在test.main()方法的第5行。这有助于我们追踪代码执行路径,查找可能的问题源。 完整线程转储还包括其他由JVM...

    gdb入门.pdf

    - `kill`:终止当前正在GDB控制下的程序执行。 - `list`:列出与当前执行程序相关的源代码。 - `print`:显示变量或表达式的值。 - `run`:执行程序。 - `search`:在源文件中搜索模式。 - `set variable`:给变量...

    实验五-进程间通信实验(二).doc

    这可以通过`kill()`函数或者其他方法实现。 #### 实验过程实例 下面展示一个关于无名管道程序设计的简单示例代码: ```c /* pipe.c */ #include #include #include #include #include #include #define ...

    python使用信号量动态更新配置文件的操作

    print("test signal") get_config() while True: pass ``` 配置文件(config.cfg)的内容可能如下: ```ini [login] name = Recar ``` 通过向运行的程序发送 HUP 信号(例如 `kill -SIGHUP <进程ID>`),可以...

    2009 达内Unix学习笔记

    telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss 老师测评网址 http://172.16.0.198:8080/poll/ 各个 shell 可互相切换 ksh:$ sh:$ csh:guangzhou% bash:bash-3.00$ 一、注意...

    在Python运行时动态查看进程内部信息的方法

    signal.signal(signal.SIGQUIT, signal_handler) threading.Thread(target=my_object.test).start() while True: time.sleep(60) except KeyboardInterrupt: sys.exit(1) ``` ##### 动态加载模块 `bar.py` -...

    linux学习相关

    - `kill -s <signal> + PID`: 发送特定信号给指定PID的进程。 - `killall <pattern>`: 杀死所有匹配模式的进程。 #### 四、文件系统命令 这些命令用于管理和操作文件系统。 - **磁盘空间**: - `$ df`: 查看...

    node的process以及child_process模块学习笔记

    5. `process.kill(pid[, signal])`:用来终止指定PID的进程,`signal`可选,用于发送特定的信号。 6. `process.on('uncaughtException', callback)`:监听未捕获的异常,当出现异常但没有被处理时,触发此事件,通常...

    UNIX环境高级编程(第二版,英文版)

    kill and raise Functions Section 10.10. alarm and pause Functions Section 10.11. Signal Sets Section 10.12. sigprocmask Function Section 10.13. sigpending Function Section ...

    Linux学习讲稿

    - `kill -<signal> <pid>`: 发送信号给指定的进程ID。 - 示例:`kill -9 516`: 结束进程ID为516的进程,其中`9`为结束信号。 - **1.10 cp拷贝文件** - `cp [选项] 源文件 目标文件` - 示例:`cp *.c ~/mydir1/.`...

Global site tag (gtag.js) - Google Analytics