【发布时间】:2016-04-24 20:49:35
【问题描述】:
我想并行运行一些system 调用,但即使我调用f1.get(),以下行中的处理也不会发生。这段代码有什么问题?
auto f1 = std::async( system, string("cp a b").c_str() );
f1.get(); // there is still no file "b".
注意:我之所以写string(...).c_str(),是因为在我的真实代码中,我使用的是将来自不同字符串的参数放在一起。
【问题讨论】:
-
string("cp a b").c_str()将在运行时将一个悬空指针传递给system。 -
另一方面,字符串字面量仍然存在。
std::async( system, "cp a b") -
而且代码似乎有效。构造
system的参数的方式可能存在一些问题。 -
请不要在您的问题中输入解决方案,而是发布答案并接受它。
标签: c++ c++11 asynchronous future