Как получить экземпляр QIODevice для текстовых потоков stdin, stdout, stderr в QtJambi? - PullRequest
6 голосов
/ 15 декабря 2010

Я хотел бы получить QIODevice, который представляет стандартные потоки ввода-вывода (stdin, stdout, stderr) в QtJambi, чтобы я мог получать уведомления, когда новая строка может быть прочитана или записана.

1 Ответ

9 голосов
/ 15 декабря 2010

Ну, если вы просто хотите иметь реализацию 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));

(Не уверен на 100% в синтаксисе Java, так как я использовал только Qt / C ++.)

Но если вы хотите получать уведомления, это не сработает. На самом деле, я сомневаюсь, что все будет работать, если вы не перенаправили stdin / stdout на что-то, поддерживающее уведомления, например, на сокет. В этом случае вы бы использовали метод QAbstractSocket.setSocketDescriptor ().

...