我有几个进程在同一时间运行, 在每个过程中都有一个c程序, 当这些进程运行时,每个进程/程序会不时地向stdout输出一些日志信息。 由于它们可能同时运行,因此日志信息可能与其他信息重叠。 是否可以同步多个进程的输出,以便在stdout中将来自同一进程的日志记录信息放在一起。
我的想法是将输出延迟到stdout。进程仅在完成/退出时将其所有日志记录信息输出到stdout。但是我对C中的stdout和flush不熟悉,该怎么做?
可以提出一些建议吗?谢谢!
答案 0 :(得分:1)
你正在进入Inter-process communication的充满复杂的世界。
我建议使用一些更简单的方法:编写一个记录器服务,以单线程方式对正在运行的进程的所有输出通道执行select
,然后写入输出日志顺序和明智的方式。甚至可能已经有服务可以做到这一点。
或者,只为每个进程写入不同的日志文件(到文件,而不是stdout
)!这将确保您的日志记录数据不会以不可预测的方式交错。
或者使用某些互斥锁或信号量来保护您的日志记录例程,这些互斥锁或信号量建立在您可以使用的任何操作系统级别的IPC原语之上。