如何在Linux中用C++启动进程中的PID信号?

如何在Linux中用C++启动进程中的PID信号?,c++,linux,signals,fork,ipc,C++,Linux,Signals,Fork,Ipc,我的应用程序使用fork创建子进程。我在父进程中有一个信号处理程序。在信号处理器中,我必须为父级和子级执行不同的逻辑。 信号处理器中的ie case SIGSEGV: if (parent) { cout<<"signal from parent"; } else { cou

我的应用程序使用fork创建子进程。我在父进程中有一个信号处理程序。在信号处理器中,我必须为父级和子级执行不同的逻辑。 信号处理器中的ie

case SIGSEGV:
              if (parent)
              {
                  cout<<"signal from parent";
              }
              else
              {
                  cout <<"signal from child";
              }
可能吗?或者我必须保留两个不同的信号处理程序?

使用select和read检查signalfd的用法,因为最后一个将为您提供signalfd\u siginfo结构,它具有

uint32_t ssi_pid;     /* PID of sender */

也许这会对您有所帮助。

信号总是发送到目标流程。SIGSEGV始终从进程内部生成,除非您从外部向进程触发它们,这在SIGSEGV的情况下是不推荐的。不知道有任何此类来源信息可用。