我需要一个程序来与依赖输入和输出的子进程通信.问题是我显然无法QProcess
正确使用.
进一步向下的代码应该创建一个QProcess,启动它并进入主while循环.在那里,它将子进程创建的所有输出打印到控制台,然后询问用户输入,然后通过输入传递给子进程write(...)
.
最初我遇到了两个问题:
printf
"子进程的s不能由父进程读取.scanf
在子进程中没有收到通过发送的字符串write
.至于(1),我开始意识到这是由子进程'stdout的缓冲引起的问题.通过fflush(stdout)
关于其冲洗行为的调用或操作可以容易地解决该问题.
第二个问题是我无法解决的问题.write
被调用,甚至返回正确的发送字节数.但是,子进程不会继续执行,因为没有新数据写入其输出.本scanf
似乎并没有被接收发送的数据.该程序给出的输出是:
Subprocess should have started.
124 bytes available!
Attempting to read:
Read: This is a simple demo application.
Read: It solely reads stdin and echoes its contents.
Read: Input exit to terminate.
Read: ---------
Awaiting user input: test
Written 5 bytes
No line to be read...
Awaiting user input:
Run Code Online (Sandbox Code Playgroud)
我被严重困在这里.Google +沉重的想法让我失望了,我想把这个传递给你作为我最后的希望灯塔.如果我只是没有看到所有树木的森林,我的道歉.
如果需要这些信息:我正在使用Qt5和clang编译器处理64位MacOS X. 子进程代码在同一台机器上使用gcc编译.
非常感谢你提前,
NR
主代码:
int main() …
Run Code Online (Sandbox Code Playgroud)