signal(SIGCHLD , del_pid);
您好,我在C中使用该代码删除数组中的pid,但是当我的进程终止时,我的函数del_pid总是收到17作为pid,问题是什么? 感谢
答案 0 :(得分:0)
我的函数
del_pid
总是收到17pid
。
不,信号处理程序没有给出 PID 作为参数,因为你可以通过调用getpid()
轻松获得它,并且对于给定的进程,它永远不会改变。
根据docs,传递给信号处理程序的值为signum
,信号数字。这允许您对多个信号使用相同的信号处理程序,并根据收到的信号决定做什么(例如同样处理SIGTERM
,SIGQUIT
和SIGINT
。
如果您查看Linux signal list,您确实可以看到SIGCHLD
是17
,这就是您在处理程序中获得的内容。