【发布时间】:2014-10-04 18:20:16
【问题描述】:
我正在创建一个相对简单的多进程程序来学习使用 C 在 Linux 中的信号和信号处理。我有几个进程处理信号(我使用 sigaction 来分配处理程序),这些信号被发送到进程组中的所有进程和一个在检测到一定数量的信号后显示一些信息的跟踪过程。
我的问题是这样的。如何可靠地显示跟踪过程的控制台输出?这个过程需要显示当前检测到的信号数量,我知道 printf() 不适合从信号处理程序调用。我知道我可以使用 write(),但我不确定我是否可以将变量值放入其中以显示,并且我认为这个系统调用可能会被信号中断。
您能否给我一个简单的示例,其中包含 3 个进程(一个生成信号(父级)、一个处理信号(子级 1)和一个报告信号信息(子级 2)),或者解释一下这个报告进程应该如何处理用全局共享变量的值处理输出?
谢谢
【问题讨论】:
标签: c linux signal-handling