Как создать псевдо-tty для чтения вывода и записи на ввод

Я использую fork () и execvp () для запуска процесса, который должен верить, что он подключен к интерактивному терминалу, чтобы он функционировал должным образом.

После создания я хочу захватить все выходные данные процесса, а также иметь возможность отправлять входные данные процессу.

Я подозреваю, что psuedo-ttys может помочь здесь. У кого-нибудь есть фрагмент, как это сделать?

 RBerteig30 июл. 2009 г., 01:35
Это действительно то, для чего нужны псевдо-тты. Мне часто хочется, чтобы в Windows была аналогичная встроенная возможность.

Ответы на вопрос(3)

#include <pty.h> /* for openpty and forkpty */

pid_t forkpty(int *amaster, char *name, struct termios *termp, struct winsize *winp);

Link with -lutil.

The forkpty() function combines openpty(), fork(), and login_tty() to create a new process operating in a pseudo-terminal. The file descrip‐ tor of the master side of the pseudo-terminal is returned in amaster, and the filename of the slave in name if it is not NULL. The termp and winp parameters, if not NULL, will determine the terminal attributes and window size of the slave side of the pseudo-terminal.

Ваш родительский процесс общается с ребенком, читая и записывая из файлового дескриптора, который forkpty хранит в & quot; amaster & quot; - это называется главным псевдо-терминальным устройством. Ребенок просто общается с stdin и stdout, которые подключены к ведомому псевдо-терминальному устройству.

 30 июл. 2009 г., 05:27
forkpty () в Linux и Mac, но не, например, Солярис или AIX. Если вам нужна переносимость, POSIX определяет функции posix_openpt (), ptsname (), grantpt () и unlockpt ().
 30 июл. 2009 г., 05:46
Да, это стандарт BSD, унаследованный от Linux.

ожидать уже упоминалось для использования через Tcl, но его также можно использовать без Tcl, рассматривая его как библиотеку C и вызывая APIзадокументировано здесь

использует язык сценариев под названием tcl (произносится как щекотка).

http://expect.nist.gov

 30 июл. 2009 г., 01:41
Хотя ожидаемый веб-сайт выглядит любительским, ожидаемый существует уже много лет, поэтому он представляет собой солидный пакет.
 30 июл. 2009 г., 07:14
Поскольку OP начинается с «Я использую fork () и execvp () для запуска процесса ...» Понятно, что они хотят включить эту функциональность в существующую программу, а не перезаписывать ее в TCL.

Ваш ответ на вопрос