Process 是否可以同步多个正在运行的进程的输出或延迟进程的输出?
我有几个进程同时运行, 每个过程中都有一个c程序, 当这些进程运行时,每个进程/程序都会不时向标准输出一些日志信息。 由于它们可能同时运行,因此日志信息可能与其他日志信息重叠。 是否可以同步多个进程的输出,以便在标准输出中,将来自同一进程的日志信息放在一起 我的想法是将输出延迟到stdout。进程只有在完成/退出时才将其所有日志信息输出到标准输出。但是我不熟悉C中的stdout和flush,怎么做Process 是否可以同步多个正在运行的进程的输出或延迟进程的输出?,process,multiprocessing,stdout,Process,Multiprocessing,Stdout,我有几个进程同时运行, 每个过程中都有一个c程序, 当这些进程运行时,每个进程/程序都会不时向标准输出一些日志信息。 由于它们可能同时运行,因此日志信息可能与其他日志信息重叠。 是否可以同步多个进程的输出,以便在标准输出中,将来自同一进程的日志信息放在一起 我的想法是将输出延迟到stdout。进程只有在完成/退出时才将其所有日志信息输出到标准输出。但是我不熟悉C中的stdout和flush,怎么做 有人能提出一些建议吗?谢谢 你正在进入一个充满焦虑和复杂的世界 我推荐几种更简单的方法:编写一个记
有人能提出一些建议吗?谢谢 你正在进入一个充满焦虑和复杂的世界 我推荐几种更简单的方法:编写一个记录器服务,以单线程方式在运行进程的所有输出通道上执行
select
,然后以顺序和合理的方式写入输出日志。甚至可能已经有服务可以做到这一点
或者,只需为每个进程编写不同的日志文件(到文件,而不是stdout
)!这将确保日志数据不会以不可预知的方式交错
或者使用某种互斥或信号量来保护您的日志记录例程,该互斥或信号量构建在您可以使用的任何操作系统级IPC原语之上。这有点复杂,stdout和flush如何?但在C语言中似乎没有刷新功能,写入多个不同的文件太复杂了?这就是我解决这个问题的方法。我认为,
stdout
的输出没有按照您期望的方式进行缓冲flush
在这种情况下解决您的问题没有多大意义,尽管存在类似的低级终端控制例程,但它们不是您想要的。实际上,我正在做一系列测试。虽然同时可能有几个过程。总的来说,有许多过程,这将导致许多输出文件。