Вы, вероятно, не можете получить однозначный ответ, поскольку мы обычно получаем оба варианта: у процесса есть возможность демонизировать себя, а у монитора процесса есть возможность демонизировать своих потомков.
Лично я предпочитаю, чтобы монитор процесса или скрипт выполняли это по нескольким причинам:
1. если монитор процесса хочет внимательно следить за своими детьми, чтобы перезапустить их, если они умирают, он может не демонизировать их. SIGCHLD будет доставлен на монитор при выходе из одного из его дочерних процессов. Во встроенных системах мы делаем это много.
2. Обычно при демонизации вы также устанавливаете euid и egid. Я предпочитаю не кодировать в каждый дочерний процесс знание политики системного уровня, например, использования uids.
3. Он позволяет повторно использовать одно и то же приложение в качестве инструмента командной строки или демона (я свободно признаю, что на практике это редко случается).