X выдает ошибки при вызове forkpty. (C ++) - PullRequest
3 голосов
/ 30 января 2010

Когда моя программа попадает в эту строку:

pid_t nPid = forkpty( &m_nMasterFD, NULL, NULL, NULL );

Выводит это:

X Error: BadIDChoice (invalid resource ID chosen for this connection) 14
  Extension:    148 (RENDER)
  Minor opcode: 17 (RenderCreateGlyphSet)
  Resource id:  0x3600002
<unknown>: Fatal IO error 4 (Interrupted system call) on X server :0.0.

И заканчивается. Как видите, я пытаюсь создать pty для запуска, но он не работает.

Кроме того, есть ли способ forkpty() вызываться в классе? (Я пробовал оба пути, но ни один из них не работал.)

Я программирую на QT C ++ в Ubuntu 9.10.

РЕДАКТИРОВАТЬ: Вот ссылка на вопрос с кодом, который, наконец, работал для меня.

1 Ответ

1 голос
/ 31 января 2010

forkpty () разветвляет ваш процесс. Сначала необходимо закрыть файловые дескрипторы, в частности соединение с X-сервером в вашем дочернем процессе. Это означает, что вы, вероятно, не можете использовать forkpty, но должны использовать openpty (), fork (), закрывать файловые дескрипторы в дочернем процессе, logintty / ()

...