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

时间:2013-05-11 00:49:31

标签: process multiprocessing stdout

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

我的想法是将输出延迟到stdout。进程仅在完成/退出时将其所有日志记录信息输出到stdout。但是我对C中的stdout和flush不熟悉,该怎么做?

可以提出一些建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

你正在进入Inter-process communication的充满复杂的世界。

我建议使用一些更简单的方法:编写一个记录器服务,以单线程方式对正在运行的进程的所有输出通道执行select,然后写入输出日志顺序和明智的方式。甚至可能已经有服务可以做到这一点。

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

或者使用某些互斥锁或信号量来保护您的日志记录例程,这些互斥锁或信号量建立在您可以使用的任何操作系统级别的IPC原语之上。