2012-06-30 2 views
2

в C или Баше,Как получить дескриптор файлового файла Pseudo Terminal изнутри сеанса ssh?

мне было интересно, как, если это возможно, вы получите от внутри SSH сессии, дескриптор файла в псевдо-терминале мастер, ответственный за получение вклада в этот ведомом сеансе (PTS).

ответ

2

Процесс оболочки не имеет дескриптора главного файла, только ведомого.

Родительский процесс оболочки (будь то sshd или xterm или экран или что-то еще) создает новый мастер, вызывая getpt(3) или posix_openpt(3). Функция возвращает дескриптор главного файла. Затем родительский процесс получает дескриптор подчиненного файла, вызывая комбинацию из grantpt(3), unlockpt(3), ptsname(3) и open(2). Это для Linux и других POSIX-систем, другие * nixes могут использовать другие функции, но результат сети тот же. Родительский процесс имеет пару master/slave дескрипторов файлов.

Только подчиненный дескриптор и только подчиненный дескриптор передаются в оболочку как стандартный вход, выход и ошибка.

+0

довольно хороший спасибо n.m. – bazz

0

От Solaris 5.8 PTS (7D) Man-страницы - ПОТОКОВ псевдо-TTY рабовладелец

Only one open is allowed on a master device. 

Я думаю, что ответ на мой вопрос :)
EDIT: на самом деле это не так, потому что, если есть способ получить файловый дескриптор, мне не нужно будет открываться снова, это файловый дескриптор lol, нет необходимости открывать

0

В системах на основе unix вы можете открыть управляющий терминал текущего процесса, открыв /dev/tty. Во многих случаях ваша программа уже будет открыта как stdin, stdout и stderr, но даже если ваша программа вызывается с перенаправлением stdin, stdout или stderr, /dev/tty предоставит вам управляющий терминал процесса.

 Смежные вопросы

  • Нет связанных вопросов^_^