Linux:向进程发送信号的 3 种方法

举报
Tiamo_T 发表于 2022/04/06 16:59:23 2022/04/06
8.6k+ 0 0
【摘要】 如何向另一个进程发送信号?你能解释一下在 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

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。