C获取一个信号以发送一个值

C获取一个信号以发送一个值,c,signals,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 secondfu

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

我正在努力尝试如何处理第二个函数的实际代码。

在标准C中,您所能做的就是通过类型为
volatile sig\u atomic\t
的全局变量在信号处理程序中设置一个原子标志

因此,您的信号处理程序设置标志并返回;主循环将轮询此标志,以查看是否收到任何信号。然后,当主循环检测到该标志时,它会将消息发送给子循环


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

缺少分号。在线#1担心吗?它的pseduco代码“随机”与“异步”非常不同。