我需要我的代码(Linux 上的 C++)来调用第二个可执行文件,之前编写了一个由第二个程序读取的输出文件。天真的方法,
std::ofstream out("myfile.txt");
// write output here
out.close();
system("secondprogram myfile.txt");
遭受潜在的竞争条件,即使 out.close() 已经执行,文件也不能立即被secondprogram
? 如果是这样,解决此问题的最佳做法是什么?
三个注意事项:
- 如果这是依赖于文件系统的,我对 ext3 和 tmpfs 上的行为感兴趣。
- 显然还有其他原因(文件权限等)导致第二个程序可能无法打开文件;我只是对比赛条件的可能性感兴趣。
- 上面示例中的硬编码文件名是为了简单起见;实际上我使用
mkstemp
.