Do I need to change the way I have done daemon setup code in C/C++ for the last decade?
Sim.
Mesmo uma década ou mais atrás, este não era o caminho certo a seguir. Não está certo desde o início dos anos 90 com o AIX System Resource Controller. Os usuários do daemontools defenderam não fazer as coisas desta maneira a partir do final dos anos 90 em diante. Não era certo para a Upstart que os principais sistemas operacionais Linux começaram a adotar em 2006. Não era certo para executar as coisas da AT & T System 5 Release 3 inittab
no início dos anos 80.
Não é certo para o systemd. Mesmo que as pessoas possam lhe falar sobre o tipo forking
, o que elas geralmente esquecem, ou nem sabem, para dizer é que esse é um protocolo de prontidão de serviço específico, que depende de bifurcação dupla sendo feito de uma maneira particular. Pior, a maneira que alguém precisa fazer para falar corretamente o protocolo não combina bem com o modo como você e os outros escreverão seus programas em C / C ++.
Em 2008, minha Resposta com Frequência sobre o assunto já existia por cerca de três quartos de uma década, e eu e outros tínhamos dito às pessoas a mesma coisa por um bom tempo antes de colocá-las na forma da FGA. / p>
A IBM vinha dizendo isso em um redbook desde 1995.
Alguns Johnny-come-latelys têm dito a mesma coisa, do ponto de vista do sistema, no manual do sistema por meros 8 anos ou mais. ☺
Deixe o subsistema de gerenciamento de serviços manipular tudo isso. Seu programa já está sendo executado em um contexto do daemon quando ele começa a ser executado.
Se você realmente quiser manter todo o código que depende da falácia da demonização sendo verdade, então pelo menos faça o que muitas outras pessoas têm feito (em parte em resposta às pessoas daemontools) feito nas últimas duas décadas e dê ao mundo uma opção de linha de comando que desliga tudo . Mas, por favor, não faça com que a opção de linha de comando funcione como uma opção de depuração.
Leitura adicional
- Jonathan de Boyne Pollard (2001). Erros a evitar ao projetar programas do programa Unix . Respostas frequentemente dadas.
- Jonathan de Boyne Pollard (2015). Você realmente não precisa daemonizar. Realmente. . A Casa do Horror.
- Jonathan de Boyne Pollard (2015). Problemas de protocolo de preparação com o Unix dæmons . Respostas frequentemente dadas.
- link