QProcess在windows下进行通信,发送给子进程接受不到消息解决

QT QProcess 进行在windows下进行通信发送给子进程接受不到消息解决

Linux下,网上的通信很正常

这是QProcess的发送方式

process = new QProcess(this);
// 	开始,处于准备状态
 process->start(app, args);
 
//	开始运行
process->waitForStarted()

//	如果处于运行状态,
if (process->state() != QProcess::Running)
        return;
process->write(message.toLocal8Bit());

在linux下,通过网上一般的方式,通过写入到标准输入里面,然后通过File输出出来,在Qt中,通过QSocketNotifier, 通过绑定信号槽,实现监听

//	通过监听stdio
QSocketNotifier(fileno(stdin), QSocketNotifier::Read, parent);
connect(this, SIGNAL(activated(int)), this, SLOT(receivedData()));

void receivedData()
{
    // 存入到 ba 
    QByteArray ba;
    while (true) {
        const int c = getc(stdin);
        if (c)
            ba.append(char(c));
         if (c == '\n')
             break;
    }
}

在windows下

StdIN并不能通过File监听下来,所以需要通过windows的api监听下来。笔者找了很久,突然发现qt中的源码的中有这部分的内容,qt工具类的assistant中,存在了这方面的用法。但由于会阻塞住,所以需要新开一个线程。

// 获得句柄
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值