возникла проблема с использованием boost, использую пример по туториалу с двуноправленным контейнером, но он почему-то отказывается работать... Просто зацикливается в определенном месте и все на этом. Зациливание происходит перед завершением дочернего процесса, потому что данные в консоль не выводятся.
#include<boost/process/>
#include<iostream>
#include<string>
int main(int argc, char* argv[]) {
boost::process::opstream in;
boost::process::ipstream out;
boost::process::child c("c++filt", boost::process::std_out > out, boost::process::std_in < in);
in << "_ZN5boost7process8tutorialE";
std::string value;
out >> value;
std::cout << value << std::endl;
c.terminate();
return EXIT_SUCCESS;
}
Но зато однонаправленные контейнеры работают прекрасно, вот также пример с туториала, он работает отлично:
#include <boost/process.hpp>
#include<iostream>
using namespace boost::process;
int main()
{
ipstream pipe_stream;
child c("gcc --version", std_out > pipe_stream);
std::string line;
while (pipe_stream && std::getline(pipe_stream, line) && !line.empty())
std::cerr << line << std::endl;
c.wait();
}
Я уже просто даже и не знаю в чем может быть причина... Использую бибилиотеку boost 1.65, вот пример подключения к проекту:
set (LIBRARIES -lboost_system -lboost_filesystem -lboost_regex -lboost_date_time)
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_include_directories (${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIR})
target_link_libraries (${PROJECT_NAME} ${LIBRARIES})
адеюсь, что кто-ниубдь поможет мне с этой проблемой, потому уже не знаю что и пробовать, заранее спасибо...
in << "_ZN5boost7process8tutorialE";
Здесь две ошибки:
Само собой после этого и c++filt, и основной процесс висят неопределённо долго на чтение.
Обе ошибки решаются сбрасыванием в поток std::endl
:
in << "_ZN5boost7process8tutorialE" << std::endl;
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Мне нужно сделать bool, который будет возвращать true, если (1 + (rand() % 101)) <= 50, в противном случае возвращать false
Как подключить библиотеку, скачанную с GitHub, в C++?