我的应用程序使用fork()创建子进程。我在父进程中有一个信号处理程序。在信号处理程序中,我必须为父母和孩子做不同的逻辑。 即在信号处理程序中
case SIGSEGV:
if (parent)
{
cout<<"signal from parent";
}
else
{
cout <<"signal from child";
}
有可能吗?或者我必须保留两个不同的信号处理程序?
答案 0 :(得分:0)
使用signalfd
和select
检查read
(man signalfd)的使用情况,因为这最后会给你signalfd_siginfo
结构,
uint32_t ssi_pid; /* PID of sender */
也许这会对你有帮助。