Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Process 是否可以同步多个正在运行的进程的输出或延迟进程的输出?_Process_Multiprocessing_Stdout - Fatal编程技术网

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

Process 是否可以同步多个正在运行的进程的输出或延迟进程的输出?,process,multiprocessing,stdout,Process,Multiprocessing,Stdout,我有几个进程同时运行, 每个过程中都有一个c程序, 当这些进程运行时,每个进程/程序都会不时向标准输出一些日志信息。 由于它们可能同时运行,因此日志信息可能与其他日志信息重叠。 是否可以同步多个进程的输出,以便在标准输出中,将来自同一进程的日志信息放在一起 我的想法是将输出延迟到stdout。进程只有在完成/退出时才将其所有日志信息输出到标准输出。但是我不熟悉C中的stdout和flush,怎么做 有人能提出一些建议吗?谢谢 你正在进入一个充满焦虑和复杂的世界 我推荐几种更简单的方法:编写一个记

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

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


有人能提出一些建议吗?谢谢

你正在进入一个充满焦虑和复杂的世界

我推荐几种更简单的方法:编写一个记录器服务,以单线程方式在运行进程的所有输出通道上执行
select
,然后以顺序和合理的方式写入输出日志。甚至可能已经有服务可以做到这一点

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


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

这有点复杂,stdout和flush如何?但在C语言中似乎没有刷新功能,写入多个不同的文件太复杂了?这就是我解决这个问题的方法。我认为,
stdout
的输出没有按照您期望的方式进行缓冲
flush
在这种情况下解决您的问题没有多大意义,尽管存在类似的低级终端控制例程,但它们不是您想要的。实际上,我正在做一系列测试。虽然同时可能有几个过程。总的来说,有许多过程,这将导致许多输出文件。