Как процесс (в моем случае руководитель сеанса) может получить управляющий терминал?
Что я делаю в своей программе:
1. fork;
2. parent -> while(1) or smth. similar;
3. child -> setsid();
exec "man ps";
Я верил, что ничего не получу в выводе.(child является лидером сеанса и, следовательно, теперь он не имеет никакого отношения к старому tty) Но я понял и не понимаю почему.Мужские выходы.Но не интерактивно.Когда я нажимаю Ctrl-z, он становится интерактивным, когда я нажимаю 'q', он завершается и возвращается к моей проге (родительской).Итак, вопросы:
- Пожалуйста, объясните, что происходит в начале (почему я должен нажать ctrl-z, читайте выше)
- Почему человек выводит некоторые данные в этой оболочке?
- Как человек может сделать это без подключения к tty (я проверил это с помощью ps, у человека и пейджера есть «?» В столбце TTY)
- И наконец: как новый руководитель сеанса может получить управляющийТерминал.Есть ли какие-нибудь способы кроме
open(/dev/tty)
?