是否可以同步多个运行进程的输出或延迟进程的输出



我有几个进程同时运行,在每个过程中都有一个c程序,当这些进程运行时,每个进程/程序会不时地向stdout输出一些日志信息。由于它们可能同时运行,因此日志信息可能与其他日志信息重叠。是否有可能同步多个进程的输出,以便在标准输出中,将来自同一进程的日志信息放在一起?

我的想法是延迟输出到标准输出。进程只有在完成/退出时才会将所有日志信息输出到stdout。但是我不熟悉C中的stdout和flush,怎么做?

谁能给点建议?谢谢!

您正在进入令人担忧和复杂的进程间通信世界。

我推荐一些更简单的方法:编写一个日志服务,以单线程方式对正在运行的进程的所有输出通道执行select,然后以顺序和合理的方式写入输出日志。甚至可能已经有这样的服务了。

或者,只是为每个进程写不同的日志文件(到文件,而不是stdout) !这将确保您的日志记录数据不会以不可预测的方式交错。

或者用某种互斥锁或信号量来保护你的日志程序,这些互斥锁或信号量建立在你可用的任何os级IPC原语之上。

最新更新