Giriş
Şu satırı dahil ederiz.
Constructor
Şöyle yaparız.
read() işlemi sonucunda okunan byte sayısnı verir.
Şöyle yaparız.
Şöyle yaparız.
std::getline ile beraber kullanmak için şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/process.hpp>
Diğer uygulamanın çıktısını senkron olarak okumak için kullanılır. Eğer çıktıyı asenkron olarak okumak istersek async_pipe sınıfı kullanılır.Constructor
Şöyle yaparız.
namespace bp = boost::process;
bp::ipstream out;
gcount metoduread() işlemi sonucunda okunan byte sayısnı verir.
Şöyle yaparız.
totalRead += out.gcount();
read metoduŞöyle yaparız.
integer_type totalRead = 0;
char a[10240];
while (out.read(a,10240))
totalRead += out.gcount();
Diğerstd::getline ile beraber kullanmak için şöyle yaparız.
std::vector<std::string> args {
"-c",
R"--(for a in one two three four; do
sleep "$(($RANDOM%2)).$(($RANDOM%10))";
echo "line $a";
done)--" };
bp::ipstream output;
bp::child p("/bin/bash", args, bp::std_out > output);
std::string line;
while (std::getline(output, line)) {
std::cout << "Received: '" << line << "'" << std::endl;
}
Çıktı olarak şunu alırız.At 0.409434s Received: 'line one'
At 0.813645s Received: 'line two'
At 1.2179s Received: 'line three'
At 2.92228s Received: 'line four'
Hiç yorum yok:
Yorum Gönder