C获取发送值的信号

时间:2014-12-19 01:02:04

标签: c signals

是否可以使用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

我正在努力试图看看我将如何处理第二个功能实际代码。

1 个答案:

答案 0 :(得分:0)

在标准C中,您只能通过类型为volatile sig_atomic_t的全局变量在信号处理程序中设置原子标记。

所以你的信号处理程序设置标志并返回;并且您的主循环将轮询此标志以查看是否已收到任何信号。然后,主循环在检测到标志时将消息发送给子节点。

特定操作系统可能允许或不允许您在信号处理程序中执行更多操作(例如,打开管道并发送内容)。