美文网首页
重定向子进程的输出

重定向子进程的输出

作者: 雯饰太一 | 来源:发表于2023-07-15 12:48 被阅读0次

直接上代码

QProcess* pProcess = new QProcess(m_pGLobby);
    pProcess->setReadChannel(QProcess::ProcessChannel::StandardOutput);
    pProcess->setWorkingDirectory(QCoreApplication::applicationDirPath());
    QString _gid = gid;
    QObject::connect(pProcess, &QProcess::readyReadStandardOutput, [=]()
        {
            L_Printf("[C Process] %s output: %s"
                , _gid.toLocal8Bit().data()
                , pProcess->readAllStandardOutput().constData());
        });
    //pProcess->setStandardOutputFile("out.txt");//输出到文件
    pProcess->start(appFile);

备注:需要等待子进程的缓冲区满了之后才会进入槽函数,如果想要立即看到输出结果,可以在子进程的main函数中把缓冲区设置的小一点。

//设置缓冲区
setvbuf(stdout, NULL, _IOLBF, 3);

但是,上述方法输出的内容并不完整,对局监听子进程这种的需求,并不能很好的进行输出,期望能够单独打开一个黑窗口,将输出内容定位到黑窗口中去。或者是提供协助输出的模块进行内容输出。

后期项目中实践,最终没有使用多进程的方式,而是一个多线程,并且将日志输出抽象成为了接口,并支持通过该接口进行控制台、UI窗口、日志文件、服务日志等方式进行输出,多进程的开发方式在后期似乎并没有用到。

Setvbuf.c Line64

Expression: (2<=size)&&(size<=INT_MAX)

For information on how your program can cause an assertion failure, see the visual C++ documentation on asserts.

*setvbuf*(*stdout*, *NULL*, *_IOLBF*, 0);
*setvbuf*(*stdout*, *NULL*, *_IOLBF*, 3);

备注:Debug模式下,不能把缓冲区设置的太小。

相关文章

  • Linux基础(二)

    七、重定向、管道符 1、重定向 1、输入输出原理 进程使用称为文件描述符的编号通道来获取并发送输出。所有进程在开始...

  • Linux重定向day13

    1.重定向概述2.重定向的输出输入3.进程管道技术 一、重定向概述 什么是重定向:Linux重定向是指修改原来默认...

  • 小鸟初学Shell编程(五)输入输出重定向

    重定向作用 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。 重定向可以让我们的程序的标准输出、错误...

  • day13-重定向

    1.什么是重定向 2.为何要使用重定向 3.标准输入与输出 进程将从标准输入中得到数据,将正常输出打印至屏幕终端,...

  • 《Linux就该这么学 》笔记(六)| 管道符、重定向和环境变量

    1. 重定向 重定向技术的 5 种模式 标准覆盖输出重定向 标准追加输出重定向 错误覆盖输出重定向 错误追加输出重...

  • linux输出输入重定向

    1.系统中输入输出的管理 管理输入输出的符号2>重定向错误输出&>重定向所有输出>重定向正确输出 注意:重定向会覆...

  • day 12 重定向

    《 输入与输出 》重定向 1. 输出重定向,改变输出内容的位置。输出重定向有如下几种方式,如下: ...

  • golang子进程的的标准输出和标准错误

    golang子进程的的标准输出和标准错误 使用exec.Run()运行子进程的时候,子进程的标准输入输出在哪里呢。...

  • Linux重定向与管道

    1.重定向概述 1.1什么是重定向 将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中 1.2进程将从标准输...

  • 使用linux三剑客做一些事情

    重定向 yum grouplistecho命令:打印输出内容输出重定向:>或者1>使用是覆盖追加输出重定向:>>或...

网友评论

      本文标题:重定向子进程的输出

      本文链接:https://www.haomeiwen.com/subject/fvfiydtx.html