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