esp-6ren">
gpt4 book ai didi

c++ - std 系统在转到下一行 c++ 后运行

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:23 24 4
gpt4 key购买 nike

这是我的一段代码:

void Espresso::run()
{
std::system("/home/espresso-ab-1.0/src/espresso espresso.in > espresso.out");
std::string line;
std::ifstream myfile ("espresso.out");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
std::cout << line << '\n';
}
myfile.close();
}
}

我想知道上面的代码是否首先运行系统命令并完全填充“espresso.out”文件,然后转到下一行读取它。如果没有,我如何确保文件在阅读之前已完全打印出来。

注意:我只能使用 C++03。

感谢您的及时回答。我想通过以下方式更新我的问题:- 它也是一种线程安全的方法吗?

最佳答案

std::system 不是异步函数。因此,例如,如果您要运行:

std::system("sleep 5");
std::cout << "Foo" << std::endl;

“Foo”将在 5 秒后显示。当然,如果你在 linux 上,你可以像这样运行它 std::system("sleep 5 &")。然后 sleep 命令将作为后台进程运行,系统调用后的代码将立即执行。虽然我鼓励你不要使用这个功能。通过名称调用系统函数是危险的。想象一下,如果有人用他们自己的程序替换了您系统中的 sleep 二进制文件,会发生什么。结论:您的程序将挂起,直到系统命令完成。这样您的文件就准备好了。

关于c++ - std 系统在转到下一行 c++ 后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com