是否可以使用C中的信号来运行父进程和子进程,并且当按下随机控制C(SIGINT)时,会给父进程一个整数以通过管道传递给子进程。
伪代码:
main:
-call firstfunction
handler:
-handler for SIGINT
-call second function if SIGINT is live
firstfunction:
-create pipe, fork for child
-let OS know to handle SIGINT
secondfunction:
-handler for control C signal
-return a INT value to firstfunction parent process
我正在努力试图看看我将如何处理第二个功能实际代码。
答案 0 :(得分:0)
在标准C中,您只能通过类型为volatile sig_atomic_t
的全局变量在信号处理程序中设置原子标记。
所以你的信号处理程序设置标志并返回;并且您的主循环将轮询此标志以查看是否已收到任何信号。然后,主循环在检测到标志时将消息发送给子节点。
特定操作系统可能允许或不允许您在信号处理程序中执行更多操作(例如,打开管道并发送内容)。