一尘不染

Linux C:接收到信号后,是否可以知道发送者的PID?

linux

假设我的C程序处理SIGUSR1。当它接收到信号时,是否可以知道是谁发送的?即 得到那个过程的pid?


阅读 464

收藏
2020-06-07

共1个答案

一尘不染

是的,如果您使用sigaction调用而不是来设置信号处理程序signal。这样做可以让您设置一个带有三个参数的信号处理程序:

  • An int,代表信号编号(就像signal
  • A siginfo_t *是一种结构,其中包含有关信号源的各种信息,包括发送方的pid(如果适用)。(其中还包括有关自动信号之类的信号原因的信息SIGSEGV。)
  • A ucontext_t *,与哪个线程获得信号有关。大多是可忽略的。
2020-06-07