2014-12-19 69 views
-1

是否有可能使用C中的信号来运行父进程和子进程,并且当按下随机控制的C(SIGINT)时,会向父进程传递一个整数以传递给子进程通过管道。C获取信号发送值

伪代码:

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 

我竭力想看看我将如何去有关secondfunction实际代码。

+1

缺少分号。在线#1 – wildplasser 2014-12-19 01:03:33

+1

对不起?它的pseduco代码。 “随机”的 – lecardo 2014-12-19 01:08:40

+0

与“异步”非常不同。 – 2014-12-19 02:15:33

回答

0

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

所以你的信号处理程序设置标志并返回;你的主循环将轮询这个标志来查看是否收到了任何信号。当主环路检测到该标志时,它会将消息发送给孩子。

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