我正在创建一个相对简单的多进程程序,以了解使用C的Linux中的信号和信号处理。我有几个进程处理发送到所有进程的信号(我使用sigaction来分配处理程序)过程组和一个跟踪过程,该过程在检测到一定数量的信号之后显示一些信息。信号处理输出显示问题
我的问题是这样的。如何可靠地显示跟踪过程中的控制台输出?此过程需要显示检测到的当前信号数量,并且我知道printf()不适合从信号处理程序调用。我知道我可以使用write(),但是我不确定我可以将变量值放到这里来显示,我认为这个系统调用可以被信号中断。
你能给我一个简单的例子,有3个过程(一个产生信号(父),1个处理信号(孩子1)和一个关于信号的报告信息(孩子2)),或者解释记者如何处理应该使用全局共享变量的值处理输出?
感谢
感谢有关printf()的信息。 我知道你对一个流程的看法,知道他人在做什么。我使用mmap()引入了全局共享变量,它引入了并发问题,我可以使用自旋锁,sem,mutext等来处理这些问题......我只需要向所有进程发送信号,并让它们记录接收它,记者进程接收到相同的信号,并在计算了一些信号后显示全局共享数据。 – OwlsCIS 2014-10-05 00:26:38