Linux:向进程发送信号的 3 种方法
【摘要】 如何向另一个进程发送信号?你能解释一下在 Linux 环境中向进程发送信号的所有可用选项吗?
您可以使用本文中介绍的一种方法向进程发送各种信号。
如何向另一个进程发送信号?你能解释一下在 Linux 环境中向进程发送信号的所有可用选项吗?
您可以使用本文中介绍的一种方法向进程发送各种信号。
1. 使用 Kill 向进程发送信号
使用 kill 命令向进程发送信号。例如,如果要向进程“a.out”发送 USR1 信号,请执行以下操作。
$ ps -C a.out
PID TTY TIME CMD
3699 pts/1 00:00:00 a.out
$ kill -s USR1 3699
注意:请查看之前发过的文章 KILL进程的 4 种方法 - kill、killall、pkill、xkill。
2. 从另一个进程向一个进程发送信号
您可以使用 UNIX 系统调用 kill(来自 C 程序)将信号从一个进程发送到另一个进程。以下 C 代码片段显示了如何使用 kill 命令。
Kill 系统调用有两个参数:1)需要发送信号的进程的 PID(进程 ID)2)需要发送到进程的信号。Kill 命令成功时返回 0。
int send_signal (int pid)
{
int ret;
ret = kill(pid,SIGHUP);
printf("ret : %d",ret);
}
3. 从键盘向进程发送信号
当一个进程在终端上运行时,您可以使用某些特定的键组合从键盘向该进程发送信号。以下是几个例子。
- SIGINT (Ctrl + C) - 你已经知道了。按 Ctrl + C 会终止正在运行的前台进程。这会将 SIGINT 发送到进程以杀死它。
- 您可以通过按 Ctrl + \ 或 Ctrl + Y 向进程发送 SIGQUIT 信号
您可以使用“stty -a”命令查看向进程发送特定信号的键映射,如下所示。
$ stty -a | grep intr
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)