Witam,
Napisałem prostą (tak myślę) aplikację konsolowąw C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace AppConsoleSharp
{
    class Program
    {
        static int WorkerInstance = 0, InsideWorkers = 0;
        static void Main(string[] args)
        {
            WorkerInstance++;
            Worker worker = new Worker(); // class Worker  w konsolowej aplikacji 
        Menu:
            string cmd = Console.In.ReadLine();
            if (!string.IsNullOrEmpty(cmd))
            {
                InsideWorkers++;
                Console.Out.WriteLine("Command: " + cmd);
                Console.Out.WriteLine("Workers: " + WorkerInstance.ToString());
                Console.Out.WriteLine("WorkersInside: " + InsideWorkers.ToString());
                worker.ExecuteCommand(cmd);

                Thread.Yield();
            }
            if (cmd != "exit")
            {
                goto Menu;
            } else
            {
                worker.Close();
            }
            Console.Out.WriteLine("Behinde Menu");
        }
    }
}

Następnie próbuję uruchomić to z aplikacji GUI Qt:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QProcess>
#include "qdebug.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow), dvb(nullptr)
{
    ui->setupUi(this);

    connect(ui->pbSend, &QPushButton::clicked, this, &MainWindow::sendCommand);
    connect(ui->pbStart, &QPushButton::clicked, this, &MainWindow::startProcess);

    dvb = new QProcess(this);
    dvb->setWorkingDirectory(QApplication::applicationDirPath());
    dvb->setProcessChannelMode(QProcess::SeparateChannels);
    dvb->setProgram("AppConsoleSharp.exe");

    connect(dvb, &QProcess::started, [&]() {
        qDebug() << "Process started: ID =" << dvb->processId();
    });
    connect(dvb, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
        [=](int exitCode, QProcess::ExitStatus exitStatus) { 
            qDebug() << "Process finished: " << exitStatus;
    });
    connect(dvb, &QProcess::readyReadStandardOutput, [=]() {
        qDebug() << "Process readyReadStandardOutput: ";
    });
    connect(dvb, &QProcess::readyRead, [=]() {
        qDebug() << "Process readyread: ";
        qDebug() << dvb->readAll();
        });
    connect(dvb, &QProcess::stateChanged, [=](QProcess::ProcessState state) {
        qDebug() << "Process stateChanged: " << state;
    });   
}


MainWindow::~MainWindow()
{
    if (dvb) {
        dvb->terminate();
        dvb->close();
    }
    delete ui;
}

void MainWindow::sendCommand(bool ok)
{
    dvb->write(ui->lnCmd->text().toLatin1());
    dvb->closeWriteChannel();
}

void MainWindow::startProcess(bool ok)
{
    dvb->start();
    dvb->waitForStarted();
   // dvb->write("exit");
   // dvb->waitForBytesWritten();
}

Po uruchomieniu aplikacji Qt, po wykonaniu konstruktora MainWindow otrzymuję komunikaty:

Process stateChanged: QProcess::Starting
Process stateChanged: QProcess::Running
Process started: ID = 5164
Po naciśnięciu buttona pbSend - nic się nie dzieje.
Przy zamknięciu okna aplikacji Qt:

Process stateChanged: QProcess::NotRunning
Process finished: QProcess::CrashExit

Docelowo: chcę uzyskać możliwość komunikacji w obie strony (coś jak przez QLocalServer, albo QTcp)
Bardzo proszę o naprowadzenie na właściwy tor. Bardzo mi zależy aby to zrobić przez QProcess.
Proszę o pomoc,
Pozdrawiam.

.