Среда: Ubuntu 16.04, демон, запрограммированный на c, использующий systemd для управления процессами.
Итак, у меня есть файл модуля как:
[Unit]
Description=Fantastic Service
After=network.target
[Service]
Restart=always
Type=forking
ExecStart=/opt/fan/tastic
[Install]
WantedBy=multi-user.target
И в моем коде tastic.c,в основном это fork () X число дочерних элементов, каждый из которых выполняет so_reuseport, а затем завершается основной процесс, оставляя дочерние элементы для обработки запросов.
При вышеуказанной настройке все работает нормально, и я получаю ожидаемое поведение.
Однако, если я помещаю PIDFile в файл сервисного модуля, я получаю, что pid, предоставленный моим приложением, не существует, и это так - поскольку мой основной процесс завершается после запуска запрошенного числа дочерних элементов.
Теперь в документации systemd четко указано, что если вы делаете разветвление Type =, вы должны предоставить PIDFile, но проблема заключается в том, как мне предоставить один файл pid, когда есть несколько дочерних элементов и основнойродительский процесс завершается после запуска childs?
Я что-то упустил?