LINUX.ORG.RU

История изменений

Исправление Siborgium, (текущая версия) :

И не понимаю, почему надо отдельный виртуальный терминал создавать, если ты процессу-потомку готов свой собственный одолжить.

Это так, но тогда, полагаю, нужно как-то сообщить системе, что терминал полностью передается дочернему процессу? С псевдотерминалами это достаточно просто делается.

Как ты свою программу запускаешь?Может, у тебя ввод или вывод не подсоединены к терминалу? Верно ли перед выполнением execlp, что isatty(0), isatty(1) и isatty(2) все возвращают 1?

Спасибо, это и оказалось проблемой. Программу я запускал примерно так:

echo ... | ./a.out

Соответственно, isatty(STDIN_FILENO) == 0, остальные 1.

Что лучше сделать в таком случае?

Исходная версия Siborgium, :

И не понимаю, почему надо отдельный виртуальный терминал создавать, если ты процессу-потомку готов свой собственный одолжить.

Это так, но тогда, полагаю, нужно как-то сообщить системе, что терминал полностью передается дочернему процессу? С псевдотерминалами это достаточно просто делается.

Я сейчас пытаюсь разобраться с тем, как мне эффективно данные передавать между терминалами. Вариант с select как-то не внушает

Как ты свою программу запускаешь?Может, у тебя ввод или вывод не подсоединены к терминалу? Верно ли перед выполнением execlp, что isatty(0), isatty(1) и isatty(2) все возвращают 1?

Спасибо, это и оказалось проблемой. Программу я запускал примерно так:

echo ... | ./a.out

Соответственно, isatty(STDIN_FILENO) == 0, остальные 1.

Что лучше сделать в таком случае?