Linux 信号(一)—— kill 函数
2015-07-15 10:14
501 查看
世事并无好坏之分,全看我们怎么去想。—— 哈姆雷特·第二幕第二景
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287
用于给指定的进程或进程组发送信号。成功返回 0,出错返回 -1。
pid > 0:将信号发送给进程 ID 为 pid 的进程。
pid == 0:将信号发送给与发送进程属于同一进程组的所有进程。
pid < 0:将信号发送给进程组 ID 等于 pid 的绝对值的所有进程。
pid == -1:将信号发送给系统中所有进程。
上述中的“所有进程”不包括系统进程。
另外,调用 kill 函数的进程要有向目标进程发送信号的权限。非 root 用户通常只能向与调用 kill 函数进程具有相同用户 ID 的进程发送信号。
如果 signo 为 0,则代表空信号,kill 不发送实际信号,但可以用来确定指定进程是否仍存在。如果向一个不存在的进程发送空信号,kill 返回 -1,errno 被设置为 ESRCH (表示 pid 指定的进程或进程组不存在)。
其他 errno:“EINVAL:指定的 singo 无效;EPERM:权限不够”。
对于进程是否存在这种测试不是原子操作,当 kill 返回时,也可能原来存在的进程此时已终止。另外,系统会复用 pid,所以我们指定 pid 的进程并不一定就是想要测试的那个进程。所以这种测试并不可靠。
学习资料: 《unix 环境高级编程》
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287
#include <signal.h> int kill(pid_t pid, int signo);
用于给指定的进程或进程组发送信号。成功返回 0,出错返回 -1。
pid > 0:将信号发送给进程 ID 为 pid 的进程。
pid == 0:将信号发送给与发送进程属于同一进程组的所有进程。
pid < 0:将信号发送给进程组 ID 等于 pid 的绝对值的所有进程。
pid == -1:将信号发送给系统中所有进程。
上述中的“所有进程”不包括系统进程。
另外,调用 kill 函数的进程要有向目标进程发送信号的权限。非 root 用户通常只能向与调用 kill 函数进程具有相同用户 ID 的进程发送信号。
如果 signo 为 0,则代表空信号,kill 不发送实际信号,但可以用来确定指定进程是否仍存在。如果向一个不存在的进程发送空信号,kill 返回 -1,errno 被设置为 ESRCH (表示 pid 指定的进程或进程组不存在)。
其他 errno:“EINVAL:指定的 singo 无效;EPERM:权限不够”。
对于进程是否存在这种测试不是原子操作,当 kill 返回时,也可能原来存在的进程此时已终止。另外,系统会复用 pid,所以我们指定 pid 的进程并不一定就是想要测试的那个进程。所以这种测试并不可靠。
学习资料: 《unix 环境高级编程》
相关文章推荐
- CentOS6.5菜鸟之旅:纯转载Linux目录结构
- Linux “$” 的所有相关用法
- Git 克隆Linux kernel
- Linux如何修改SSH端口号
- centos7.1下载
- linux 下LNMP环境搭建
- linux vim分屏命令
- linux 查找目录或文件
- Linux下如何使CP命令不提示覆盖
- linux yum命令详解
- linuxsocket通信recv研究缓存机制
- Linux/Mingw Excel (*.xls)文件读取,使用libxls库
- Linux忘记root密码的解决办法
- linux 同步IO: sync、fsync与fdatasync
- Boost.PropertyTree读取ini文件(Linux环境)
- 7个Linux和Ubuntu下的免费CSS编辑器
- linux 操作系统的一些常见目录
- linux中strcpy strncpy memcpy sprintf snprintf区别总结
- ldd3读书笔记:x86的中断处理顺序
- 整理Linux查看系统日志的一些常用命令