Amarre a vida de um processo ao shell que o iniciou

De uma maneira UNIX-y, estou tentando iniciar um processo, criar um plano de fundo e vincular a vida útil desse processo ao meu shell.

O que eu estou falando não é simplesmente backgrounding o processo, eu quero que o processo seja enviado SIGTERM, ou para que ele tenha um descritor de arquivo aberto que é fechado, oualguma coisa quando o shell sai, para que o usuário do shell não tenha que explicitamente matar o processo ou obter um aviso "você está executando jobs".

Em última análise, eu quero um programa que possa ser executado, de forma única, para cada shell e transportar o estado junto com esse shell, e fechar quando o shell for fechado.

Os comandos do console do DB2 da IBM funcionam dessa maneira. Quando você se conecta ao banco de dados, ele gera um processo "db2bp", que transporta o estado e a conexão do banco de dados e o vincula ao seu shell. Você pode se conectar em vários terminais diferentes ou conexões ssh, cada um com seu próprio processo db2bp, e quando esses são fechados, o processo db2bp apropriado é encerrado e essa conexão é fechada.

As consultas do DB2 são então iniciadas com o comando db2, que simplesmente o transfere para o processo db2bp apropriado. Eu não sei como se comunica com ocorrigir processo db2bp, mas talvez ele use o dispositivo tty conectado a stdin como uma chave única? Eu acho que preciso descobrir isso também.

Eu nunca escrevi nada que fizesse tty manipulação, então eu não tenho idéia de onde começar. Eu acho que posso descobrir o resto se eu posso apenas gerar um processo que é automaticamente morto na saída do shell. Alguém sabe como o DB2 faz isso?

questionAnswers(4)

yourAnswerToTheQuestion