std系统在转到下一行c++之后运行
std system is run after going to next line c++
这里是我的一段代码:
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命令将作为后台进程运行,系统调用后的代码将立即执行。尽管我鼓励您不要使用此功能。用系统函数的名称调用它们是危险的。想象一下,如果有人用自己的程序替换了你系统中的睡眠二进制文件,会发生什么。结论:您的程序将挂起,直到系统命令完成。所以你的文件就准备好了。
是的,命令将在std::system
调用返回之前完全完成。
相关文章:
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 从C++dll访问C#中的一行主要参数
- 在C++中,我如何接受不同于同一行的用户输入
- 如何从一行中读取特定数量的字符?(C++)
- 读取最后一行代码算法 - c++ 时出现问题
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 有没有办法在一行中填充矢量图
- 需要将一行代码从C++ Qt翻译成PyQt
- 为什么如果我添加这一行,我的程序会不断询问值
- 如何使代码打印文本文件中的第一行?
- 如何在C++中以这种方式返回一行文本?
- 如何使用运算符在同一行中多次调用函数
- 如何格式化我的文本文件以使其不会一遍又一遍地重复同一行?
- 而(!inputfile.eof())只读取第一行?
- 这段代码的最后一行在做什么?
- 逐字读取文本文件中的每一行并转换为 int(无限循环或崩溃?
- C++找出覆盖同一行的数组
- 如何让字符数组在一行而不是多行中打印出来?