小编NRi*_*rer的帖子

如何正确使用QProcess写入?

我需要一个程序来与依赖输入和输出的子进程通信.问题是我显然无法QProcess正确使用.

进一步向下的代码应该创建一个QProcess,启动它并进入主while循环.在那里,它将子进程创建的所有输出打印到控制台,然后询问用户输入,然后通过输入传递给子进程write(...).

最初我遇到了两个问题:

  1. printf"子进程的s不能由父进程读取.
  2. 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)

c++ qt scanf qprocess

5
推荐指数
1
解决办法
5215
查看次数

标签 统计

c++ ×1

qprocess ×1

qt ×1

scanf ×1