1
다음 코드는 async_read를 자식 프로세스에 연결하여 async_read를 수행하려는 실제 코드에서 단순화했습니다. 아이 프로세스에서 나는 "ls"라고 부릅니다. 그냥 테스트로하고 그 결과를 얻기 위해 비동기 읽기를 원합니다. 다음을 반환합니다.async_read async_read on 데이터가없는 자식 프로세스
왜 이런 일이 발생합니까? 이상적으로 나는 "ls"를 대체하고 싶습니다. async_read로 줄 바꿈을 읽을 수있는 장기 실행 프로세스.
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <iostream>
#include <fstream>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <boost/process.hpp>
namespace bp = boost::process;
class test {
private:
boost::asio::io_service ios;
boost::asio::io_service::work work;
bp::async_pipe ap;
std::vector<char> buf;
public:
test()
: ios(), work(ios), ap(ios) {
}
void read(
const boost::system::error_code& ec,
std::size_t size) {
std::cout << ec << std::endl;
std::cout << size << std::endl;
}
void run() {
bp::child c(bp::search_path("ls"), ".", bp::std_out > ap);
boost::asio::async_read(ap, boost::asio::buffer(buf),
boost::bind(&test::read,
this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
ios.run();
}
};
int main() {
test c;
c.run();
}
라인을 읽는 것이'async_read_until' 또는'ap.read_some' il – sehe