【问题标题】:Send a SIGINT to a daemonized process向守护进程发送 SIGINT
【发布时间】:2013-01-01 17:44:50
【问题描述】:

我写了一个 c++ 代码,它自己守护进程..

它有一个用于 SIGINT 信号的信号处理程序

显然它在 shell 上运行时没有收到信号,因为它是守护进程。

如何发送信号?

谢谢

【问题讨论】:

  • 我的意思是使用 ctrl+c
  • ctrl+c 进入前台进程。
  • 在前台进程中捕获 SIGINT 并将其转发给其他进程。
  • 守护进程的全部目的是让进程永远运行,特别是对终端上的 Ctrl-C 不敏感。您可能希望添加一个程序参数以避免调用 daemon(3)

标签: c++ linux unix signals posix


【解决方案1】:

您不能使用Ctrl-CSIGINT 发送到守护进程。 您需要做的是使用ps 命令找到一个进程ID(PID)并使用kill -INT <pid> 发送信号。

【讨论】:

    【解决方案2】:

    killall进程名-信号号

    killall helloworld -2
    

    将 SIGINT 发送到 helloworld 进程

    【讨论】:

    • 谢谢,但我对此很熟悉......我更倾向于使用 ctrl+c 而不是输入命令
    【解决方案3】:

    使用ps定位其进程标识符,然后通过kill -INT PID发送SIGINT信号。

    【讨论】: