如何在QtJambi中获取stdin,stdout,stderr文本流的QIODevice实例?

tza*_*dor 6 java io qt qt-jambi

我想获得QIODevice一个代表标准IO流(stdin,stdout,stderr在QtJambi),这样我可以得到通知,每当一个新行可以读取或写入.

Ser*_*nov 9

好吧,如果您只想为这些实现QIODevice,可以使用类似的东西

QFile stdin = new QFile();
stdin.open(0, new QIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly));
QFile stdout = new QFile();
stdout.open(1, new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));
QFile stderr = new QFile();
stderr.open(2, new QIODevice.OpenMode(QIODevice.OpenModeFlag.WriteOnly));
Run Code Online (Sandbox Code Playgroud)

(不是100%肯定Java语法,因为我只使用过Qt/C++.)

但是如果你想要通知,这将无法正常工作.事实上,我怀疑除非你将stdin/stdout重定向到支持通知的东西,比如套接字,否则一切都会有效.在这种情况下,您将使用QAbstractSocket.setSocketDescriptor()方法.