Исправление 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.
Что лучше сделать в таком случае?