QProcess在Linux下双向通信
1、父进程
QProcess pro;
pro.setReadChannelMode(QProcess::MergedChannels);
pro.connect(&pro, &QProcess::readyRead, [&]{
QMessageBox::information(0, "recv", pro.readAllStandardOutput());
});
pro.start("./testProcess");
pro.write("123\n");
pro.write("446\n");
pro.write("996");
pro.write("\n");
2、子进程
QFile f;
f.open(stdin, QFile::ReadOnly);
QSocketNotifier n(f.handle(), QSocketNotifier::Read);
n.connect(&n, &QSocketNotifier::activated, [&](int n){
while (1) {
auto ba = f.readLine();
if(ba.isEmpty()){
break;
}
QFile f1;
f1.open(stdout, QFile::WriteOnly);
f1.write("hello i'm sub process");
QMessageBox::information(nullptr, "n", ba);
}
});
效果