上篇文章里列举出了常用的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
分享到:
相关推荐
在这个"test_pthread_kill测试程序"中,我们将深入探讨`pthread_kill`的用法、工作原理以及如何通过编写测试程序来验证其功能。 首先,`pthread_kill`函数的原型如下: ```c int pthread_kill(pthread_t thread, ...
$ 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-
要停止漫游器,请使用Ctrl + C中断或kill -2以使其关闭并从Signal服务正常断开连接。 要对监听器进行试运行,请使用signal-bot --test 。 这将启动一个简单的输入循环,该循环将您的消息发送到bot并将响应发送到...
p.send_signal(signal.CTRL_C_EVENT) except AttributeError: # 如果信号未定义,则直接终止 p.terminate() def main(): cmd = ['notepad.exe'] # 替换为你想要执行的命令 p = subprocess.Popen(cmd, ...
Keil MDK信号函数 Keil MDK的信号函数是一种...3. 删除信号函数,例如:signal kill test 或者 kill func test。 Keil MDK的信号函数是一种强大的工具,用于模拟和测试外部事件,帮助开发者更好地测试和调试软件。
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
- 示例:`kill -s SIGNAL 4609`,终止PID为`4609`的进程。 - **获取帮助**: - `man [命令]`:查看命令的手册页。 - 示例:`man ping`,查看`ping`命令的使用方法。 #### 十五、文本编辑器命令 - **Vi编辑器模式...
* 信号的处理:使用 signal 函数处理信号,例如:`signal(SIGUSR1, p_action)` * 信号的发送:使用 kill 函数发送信号,例如:`kill(pid, SIGUSR1)` * 信号的处理函数:p_action 函数和 c_action 函数用于处理信号 ...
升级了 0 个软件包,新安装了 28 个软件包,要卸载 0 个软件包,有 737 个软件包未被升级。 需要下载 3,425 kB 的软件包。 解压缩后会消耗掉 13.0 MB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 ...
在"main"线程的堆栈跟踪中,我们可以看到test.method1()方法在test.java的第10行被调用,而这个调用发生在test.main()方法的第5行。这有助于我们追踪代码执行路径,查找可能的问题源。 完整线程转储还包括其他由JVM...
- `kill`:终止当前正在GDB控制下的程序执行。 - `list`:列出与当前执行程序相关的源代码。 - `print`:显示变量或表达式的值。 - `run`:执行程序。 - `search`:在源文件中搜索模式。 - `set variable`:给变量...
这可以通过`kill()`函数或者其他方法实现。 #### 实验过程实例 下面展示一个关于无名管道程序设计的简单示例代码: ```c /* pipe.c */ #include #include #include #include #include #include #define ...
print("test signal") get_config() while True: pass ``` 配置文件(config.cfg)的内容可能如下: ```ini [login] name = Recar ``` 通过向运行的程序发送 HUP 信号(例如 `kill -SIGHUP <进程ID>`),可以...
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$ 一、注意...
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` -...
- `kill -s <signal> + PID`: 发送特定信号给指定PID的进程。 - `killall <pattern>`: 杀死所有匹配模式的进程。 #### 四、文件系统命令 这些命令用于管理和操作文件系统。 - **磁盘空间**: - `$ df`: 查看...
5. `process.kill(pid[, signal])`:用来终止指定PID的进程,`signal`可选,用于发送特定的信号。 6. `process.on('uncaughtException', callback)`:监听未捕获的异常,当出现异常但没有被处理时,触发此事件,通常...
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 ...
- `kill -<signal> <pid>`: 发送信号给指定的进程ID。 - 示例:`kill -9 516`: 结束进程ID为516的进程,其中`9`为结束信号。 - **1.10 cp拷贝文件** - `cp [选项] 源文件 目标文件` - 示例:`cp *.c ~/mydir1/.`...