Leí en el libro de Modern Operating systems que cuando se ejecuta un comando, el shell crea un proceso hijo, lo espera hasta que el niño haya finalizado la ejecución y luego espera otro comando del usuario. Este es el caso de muchos programas como gedit
. El terminal no toma comandos hasta que haya cerrado gedit
. Sin embargo, cuando abro el editor de código de átomo , el shell vuelve inmediatamente, listo para aceptar el siguiente comando incluso con el editor en ejecución. Cerrar el terminal no cierra el átomo. ¿Esto significa que el editor no se abrió como un proceso secundario? ¿Cuál es el mecanismo subyacente que hace esto posible?
Correr ps au | grep atom
da
<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
fuente
fuente
ps au | grep atom
en la terminal y agregar salida a su pregunta?Respuestas:
La pregunta se refiere a dos tipos de programas:
En el primer caso, los programas que interactúan con el usuario en el shell están diseñados para ejecutarse hasta su finalización antes de devolver el control al shell. No se hace nada especial.
El segundo caso es más complicado. Típicamente, el programa se bifurcará (haciendo una copia de sí mismo en la memoria), y se encargará de eliminar su asociación con el terminal de control del shell , y puede ejecutar otro programa, que se ejecuta independientemente del shell original. Es posible que vea mensajes del segundo programa, pero por lo general no interactúa con usted. Dependiendo de cómo se use, es posible que tenga
Otras lecturas:
fuente
daemon
función de biblioteca que hace todo esto.