Qt 外部运行进程的Q共享内存?

Qt 外部运行进程的Q共享内存?,qt,ipc,qsharedmemory,Qt,Ipc,Qsharedmemory,我有一个调用外部可执行文件的QApplication。此可执行文件将无限期地运行,通过标准输出将数据传递给此QApplication,除非用户从控制台手动退出。这个进程在运行时不等待STDIN(它是一个简单的C++代码,它运行为一个可执行的,有一个while循环)。 我希望能够通过从QApplication向外部进程发送某种形式的信号,在运行时修改此可执行文件的行为。我读过QT的IPC,我认为QSharedMemory是实现这一点最简单的方法。我不能使用任何类型的管道等,因为该过程没有等待标准输

我有一个调用外部可执行文件的QApplication。此可执行文件将无限期地运行,通过标准输出将数据传递给此QApplication,除非用户从控制台手动退出。这个进程在运行时不等待STDIN(它是一个简单的C++代码,它运行为一个可执行的,有一个while循环)。 我希望能够通过从QApplication向外部进程发送某种形式的信号,在运行时修改此可执行文件的行为。我读过QT的IPC,我认为QSharedMemory是实现这一点最简单的方法。我不能使用任何类型的管道等,因为该过程没有等待标准输入

是否可能存在QApplications共享的QSharedMemory以及外部运行的非QT应用程序的进程。如果有,有没有人可以给我举个例子;我想找一些,但找不到。如果没有,在我的特定场景中还有哪些其他选项可以使用


提前感谢

您必须等待任何类型的I/O的想法大多过时了。您应该设计代码,以便在I/O请求完成后(新的输入数据可用、输出数据发送等),操作系统立即通知您的代码

您只需使用标准输入即可。进程不必等待标准输入,它可以检查是否有任何输入可用,如果有,则读取。您可以在轮询共享内存段更改的相同位置执行此操作

对于Unix系统,您可以在标准输入可用时收到通知


在Windows上,最简单的测试是,有关其他解决方案,请参阅。在Windows上也有控制台句柄。

所以我的C++可执行文件(进程2)的STDUT已经在我的QPoT(进程1)正在读取的数据中。如果进程1想要发送一些东西到进程1的stdin,进程1正在检查输入,我假设这两个流不会干扰?(我在某个地方读到,既然它们是独立的频道,那就没关系了),但我会四处看看,看看情况是否如此。@Anshul他们为什么要干预?这将使整个系统毫无用处。每个方向都独立。这就是为什么在Unix上,例如,标准输入和输出在不同的文件描述符上。在Windows上,在功能上也会发生类似的事情。谢谢你,我将尝试你提到的stdin方法。