Я прочитал из книги « Современные операционные системы», что при запуске команды оболочка создает дочерний процесс, ждет его, пока дочерний процесс не завершит выполнение, а затем ожидает от пользователя другой команды. Это действительно так для многих программ, как gedit
. Терминал не принимает команды, пока я не закрылся gedit
. Однако, когда я открываю редактор кода атома , оболочка немедленно возвращается, готовая принять следующую команду, даже когда редактор работает. Закрытие терминала не закрывает атом. Значит ли это, что редактор открыт не как дочерний процесс? Каков основной механизм, который делает это возможным?
Бег ps au | grep atom
дает
<username> 8042 0.0 0.0 15944 2264 pts/1 S+ 00:55 0:00 grep --color=auto atom
shell
process
background-process
Aswin PJ
источник
источник
ps au | grep atom
в терминале и добавить вывод к вашему вопросу?Ответы:
Вопрос задается о двух типах программ:
В первом случае программы, которые взаимодействуют с пользователем в оболочке, предназначены для полного завершения до возврата управления оболочке. Ничего особенного не сделано.
Второй случай более сложный. Обычно программа разветвляется (делает свою копию в памяти) и организует удаление своей связи с управляющим терминалом оболочки и может выполнить другую программу, которая работает независимо от исходной оболочки. Вы можете видеть сообщения от второй программы, но обычно она не взаимодействует с вами. В зависимости от того, как он используется, вы можете иметь
Дальнейшее чтение:
источник
daemon
библиотечной функции, которая делает все это.