从命令行发送信号进行处理

And*_*ida 3 linux signals

我读到了有关信号的信息,我知道如何从命令行向进程发送信号.做就是了

ps -C executable
Run Code Online (Sandbox Code Playgroud)

知道这个过程的pid,然后

kill -s signal pid(number)
Run Code Online (Sandbox Code Playgroud)

但是,如果可能的话,我想找到一种更具互动性和通用性的方法.

我想从命令行向特定进程发送信号.我不想打印我想要发出信号的过程的PID,而是使用代码了解哪个过程应该发出信号的方式.

除此之外,我想了解kill命令的作用.

  • 是否会扼杀发出信号的过程?
  • 它会杀死它被调用的过程吗?
  • 如果它杀死一个进程意味着它与do类似exit(0),或者在发回信号后进程是否恢复?

cad*_*luk 8

据我了解你的问题,你想用它的名字来表示一个过程,而不是它的PID.通过组合这两个命令可以很容易地实现这一点:

kill -s signal $(ps -C executable)
Run Code Online (Sandbox Code Playgroud)


是否会扼杀发出信号的过程?

kill 可以杀了.它不一定.

来自man kill:

命令kill将指定的信号发送到指定的进程或进程组.

这意味着,该kill命令通常用于**发送任何信号.

如果它杀死一个进程意味着它与do类似exit(0),或者在发回信号后进程是否恢复?

这里:

SIGKILL信号用于立即终止程序.它无法处理或忽略,因此总是致命的.也无法阻止此信号.

如果进程收到SIGKILL信号,它会立即终止(没有调用析构函数,不进行清理).唯一不终止的进程是不间断进程.


可在此处找到Linux上可用信号的完整列表.