Я пытался демонтировать процесс и обнаружил, что мы должны fork() его дважды. Причина в том, что если процесс является лидером сеанса, тогда он может контролировать tty. Мне было интересно, каково обоснование этой теории.Как лидер сессии может взять под контроль tty в Linux?
ответ
Первый вилок для запуска демона в отдельном сеансе. То, что вы должны делать для это режим демона (псевдо-код):
fork()
if (parent) {
return
else if (child) {
setsid();
closefds();
fork();
if (child) {
childwork();
} else {
exit(0);
}
}
setsid
вызов помещает демона в его собственной сессии и разъединяет его с терминала родительского процесса. Если вы не выполняете вызов setsid
, то вы не получите новый сеанс, и демону может быть помешана группа процессов, к которой она все еще принадлежит, т. Е. Ей может быть помешано HUP
, отправленное на весь процесс группа.
Второй вызов fork()
приводит к тому, что процесс больше не является лидером сеанса. Это означает, что процесс не сможет получить управляющий терминал, если он открывает неиспользуемое терминальное устройство (случайно или намеренно), потому что это не лидер сеанса. Если бы он был еще лидером сессии, вам нужно было бы убедиться, что все открытые вызовы, которые открывают терминальные устройства, должны быть вызваны с O_NOCTTY
, чтобы быть в безопасности.
- 1. взять под контроль cin в main()
- 2. PropertyPage - взять под контроль кнопку Ok
- 3. взять под свой контроль карманный компьютер wince
- 4. Почему лидер группы не может создать сеанс в Linux
- 5. Linux TTY и драйверы
- 6. Linux TTY удаленно
- 7. Spring загрузки - взять под контроль 404 Not Found
- 8. Роль tty в ядре Linux
- 9. Сервер Linux (debian): TTY 6.5GiB
- 10. Linux TTY S1 open failed
- 11. Как войти как лидер?
- 12. Как взять под контроль таблицы стилей в ASP.NET Темы с StylePlaceHolder и стиль управления
- 13. Как определить номер tty
- 14. лидер массива
- 15. Может ли iPhone-приложение взять эксклюзивный контроль или надежно записать, почему он потерял контроль?
- 16. Получить контроль под курсором
- 17. Как взять под свой контроль размер Gridview, когда его в режиме редактирования и его нет?
- 18. Лидер рейтинга
- 19. Как взять контроль над текущим экземпляром PowerPoint, по идентификатору процесса?
- 20. Сессии, разрушаемые под высоким трафиком
- 21. как взять под контроль процесс визуализации или подавить поведение TAG БР?
- 22. Как я могу взять под свой контроль canEditRowAtIndexPath при использовании расширения RxCocoa для UITableView
- 23. Как добавить более 4 последовательных устройств tty в Linux?
- 24. Linux Контроль доступа CVS
- 25. Как бы я начал писать сниффер Linux TTY?
- 26. Как взять контроль над увольнением UIAlertView в iPhone
- 27. В чем разница между tty и vty в linux
- 28. Что поставить под контроль версий?
- 29. Объяснение «Лидер/Последователь» Образец
- 30. Как поставить файл под контроль источника?