¿Es posible cambiar el proceso padre de un proceso? Si es así, ¿cómo?
Por ejemplo,
¿Cómo se las
screenarregla para adjuntar unascreensesión y los procesos que se ejecutan dentro de ella a diferentes procesos de shell? ¿Hay cambio en el proceso de los padres?Parece haber oído hablar de otras formas de cambio del proceso de shell en las que se ejecuta un programa, pero no me acuerdo. ¿Existe también un cambio en el proceso para padres del programa?
Pensé que
disownun proceso cambia el proceso padre del proceso, simplemente porque el nombre lodisownimplica. Pero descubrí que no es cierto.El cliente Emacs puede conectarse al servidor emacs en una pestaña de terminal diferente. ¿Hay cambio en el proceso de los padres?
getppid(2)el núcleo maneja las llamadas , las llamadas al sistema y las llamadas al sistema. Un programa podría confundirse al emitir esa llamada, guardar el valor y luego usar ese valor después de que su parentesco haya cambiado. Existe la posibilidad de una condición de carrera aquí.
disownsolo elimina un elemento secundario de la lista interna de procesos secundarios de un shell. El PPID del niño sigue siendo el del caparazón. El shell ha olvidado que alguna vez comenzó a ese niño, pero el núcleo recuerda.