Atar la vida de un proceso a la cáscara que lo inició.

De una forma UNIX-y, estoy intentando iniciar un proceso, crear un fondo y vincular la vida útil de ese proceso a mi shell.

A lo que me refiero no es simplemente poner en segundo plano el proceso, quiero que el proceso se envíe SIGTERM, o que tenga un descriptor de archivo abierto que esté cerrado, oalguna cosa cuando el shell se cierra, para que el usuario del shell no tenga que detener explícitamente el proceso u obtener una advertencia de "tiene trabajos en ejecución".

En última instancia, quiero un programa que pueda ejecutarse, de forma única, para cada shell y estado de transporte junto con esa shell, y que se cierre cuando la shell se cierre.

Los comandos de la consola DB2 de IBM funcionan de esta manera. Cuando se conecta a la base de datos, genera un proceso "db2bp", que lleva el estado y la conexión de la base de datos y lo vincula a su shell. Puede conectarse en múltiples terminales diferentes o conexiones ssh, cada una con su propio proceso db2bp, y cuando se cierran, el proceso db2bp apropiado muere y esa conexión se cierra.

Las consultas de DB2 se inician con el comando db2, que simplemente las entrega al proceso db2bp apropiado. No sé cómo se comunica con elcorrecto proceso db2bp, pero tal vez utiliza el dispositivo tty conectado a stdin como una clave única? Supongo que también necesito resolver eso.

Nunca he escrito nada que haga manipulación de tty, así que no tengo ni idea de por dónde empezar. Creo que puedo descifrar el resto si puedo generar un proceso que se elimine automáticamente en la salida de shell. Alguien sabe como lo hace DB2?

Respuestas a la pregunta(4)

Su respuesta a la pregunta