gpt4 book ai didi

c++ - Boost Process 库 asynch_read 处理程序未调用

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:25 25 4
gpt4 key购买 nike

我正在尝试使用 boost process (0.5) 库。在 asych_io.cpp 示例中,读取处理程序甚至没有被调用一次。即使在调用 io_service.run() 之后也是如此。
我正在使用 Linux。

#include <boost/process.hpp>
#include <boost/iostreams/device/file_descriptor.hpp>
#include <boost/asio.hpp>
#include <boost/array.hpp>
#include <string>

using namespace boost::process;
using namespace boost::process::initializers;
using namespace boost::iostreams;

boost::process::pipe create_async_pipe()
{
return create_pipe();
}

int main()
{

boost::process::pipe p = create_async_pipe();
file_descriptor_sink sink(p.sink, close_handle);
child c = execute(
run_exe(search_path("nasm")),
set_cmd_line("nasm -v"),
bind_stdout(sink)
);

file_descriptor_source source(p.source, close_handle);

typedef boost::asio::posix::stream_descriptor pipe_end;

boost::asio::io_service io_service;
pipe_end pend(io_service,p.source);

boost::array<char, 4096> buffer;
boost::asio::async_read(pend, boost::asio::buffer(buffer),
[&](const boost::system::error_code&, std::size_t bytes_transferred){
std::cout << std::string(buffer.data(), bytes_transferred) << std::flush;
});

io_service.run();
}

最佳答案

更换后

boost::asio::async_read(pend...

pend.async_read_some(...

这对我有用。

关于c++ - Boost Process 库 asynch_read 处理程序未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770771/

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