【发布时间】:2014-11-12 06:05:58
【问题描述】:
我想存储 boost::process 的子进程,但不知道如何初始化它
操作系统:win7 64位 编译器:msvc2008 32bits 提升:1_55_0
简化后的例子
#include <boost/process/initializers.hpp>
#include <boost/process.hpp>
#include <boost/system/system_error.hpp>
#include <iostream>
void test_boost_system()
{
namespace bp = boost::process;
namespace bpi = boost::process::initializers;
//bp::child child; //#1
boost::system::error_code ec;
bp::child child_2 = bp::execute(bpi::run_exe("ldapInterface.exe"), bpi::set_on_error(ec));
if(ec.value() != 0){
std::cout<<ec.message()<<std::endl;
}else{
std::cout<<"success"<<std::endl;
}
}
如果我不想使用执行来初始化子节点,我该如何初始化它?
伪代码:
namespace bp = boost::process;
namespace bpi = boost::process::initializers;
class process_manager
{
public:
~process_manager() { bp::terminate(child_); }
void open_process(std::string const &process)
{
child_ = bp::execute(bpi::run_exe(process)); //compile error
}
private:
bp::child child_;
};
错误信息: 错误 C2512: 'boost::process::windows::child' : 没有合适的默认构造函数可用
【问题讨论】:
-
也许遵循 C++ 的哲学,你应该有一个初始化
child_、public: process_manager(Args...) : child_(Args...){}的构造函数。还有一个空的析构函数?