【发布时间】:2020-03-28 03:32:12
【问题描述】:
以下程序:
#include <boost/asio.hpp>
#include <boost/process.hpp>
#include <iostream>
namespace bp = boost::process;
int main() {
boost::asio::io_service ios;
std::vector<char> buf(4096);
bp::async_pipe ap(ios);
bp::child c("/bin/ls", bp::std_out > ap);
boost::asio::async_read(ap, boost::asio::buffer(buf),
[](const boost::system::error_code &ec, std::size_t size){});
ios.run();
int result = c.exit_code();
std::cout << result << std::endl;
}
输出383。我希望它输出0。
这几乎是来自以下示例的复制和粘贴:
【问题讨论】:
-
在检索 exit_code 之前您不应该有一个
c.wait()吗? -
@m88:请参阅文档中的示例。它没有一个。例子错了吗?
-
这是什么平台/增强版? 1.71?它适用于我的 Boost 1.66。 ISTR 处理本机进程等待状态代码与退出代码的一些更改(请参阅stackoverflow.com/questions/57732569/…)。也许那里有些东西倒退了。
-
这是 Coliru 的现场演示(增强版 1.66)coliru.stacked-crooked.com/a/8ffa1b882204a9cc
-
@sehe:是的,我使用的是 1.71
标签: c++ linux boost boost-asio boost-process