我的程序使用“系统”命令以下列方式启动两个二进制文件:
int status = system("binaryOne &");
int status = system("binaryTwo &");
由于所有三个二进制文件都写入同一个标准输出,因此所有输出都是混合的,无法理解。所以我改变了启动命令,将两个二进制文件的标准输出重定向到我做tail -f的不同文件:
int status = system("binaryOne > oneOut.txt &");
int status = system("binaryTwo > twoOut.txt &");
问题是写入文件会在某个时候停止。有时它会冻结,在某个地方缓冲,而不是它的一部分被一次又一次地扔掉。大多数时候它只是停止。
我验证了二进制文件继续运行并写入标准输出。