除了理论之外,几乎不知道信号是如何工作的。我正在写一个程序,需要子进程启动、暂停、等待父进程发送信号,然后父进程运行其部分代码,发送信号,等待子进程完成,然后子进程继续并继续通过pause((;并结束,以便父级可以继续,以便它也可以结束。我已经尝试过kill(c_pid,SIGCONT(,但程序只是挂起,因为子进程从不解包,父进程正在等待子进程完成。我需要放一个空函数来检查信号,在pause((之前写某人吗?
子进程从不解包,父进程正在等待子进程完成。我需要放一个空函数来检查信号,在pause((之前写某人吗?
根据其文档,pause()
导致调用进程(或线程(休眠,直到传递了终止进程或调用信号捕获函数的信号为止。
(添加了强调。(
因此,是的,如果您希望子级从pause()
恢复,那么您必须确保接收到父级的信号会导致调用信号捕获函数(也称为"信号处理程序"(。这需要在pause()
ing之前通过signal()
或(更好的(sigaction()
函数为该信号注册这样一个处理程序。信号处理程序的签名应该是void some_name(int)
,所以这可能就是你所想的。