Tidak.
Proses utama menangani kematian anak-anaknya, dengan cara biasa.
Ini adalah dunia POSIX. Jika proses A bercabang B, dan proses B bercabang C, D, dan E; maka proses B adalah yang melihat SIGCHLD
dan wait()
status dari penghentian C, D, dan E. Proses A tidak mengetahui apa yang terjadi pada C, D, dan E, dan ini terlepas dari systemd.
Agar A mengetahui penghentian C, D, dan E, dua hal harus terjadi.
- A harus mendaftarkan diri sebagai "subreaper". systemd melakukan ini, seperti halnya berbagai manajer layanan lainnya termasuk pemula dan nosh
service-manager
. - B harus
exit()
. Layanan yang secara bodoh, keliru, dan sia-sia mencoba untuk "menjelek-jelekkan" diri mereka sendiri yang melakukannya.
(Seseorang bisa menjadi pintar dengan kevent()
di BSD. Tapi ini pertanyaan Linux.)
systemd
memiliki konsep proses utama. Dalam dokumentasi systemd ini disebut sebagai "proses layanan utama" atau hanya "proses utama".
Contoh 4 dalam dokumentasi systemd.service menjelaskan apakah proses utama dihitung saat Type=forking
.
Dokumentasi untuk Restart=
dalam dokumen systemd.service menjelaskan berbagai kemungkinan ketika layanan dimulai sehubungan dengan proses utama.
Inilah teks kunci dari "contoh 4" yang ditautkan di atas:
systemd akan menganggap layanan sedang dalam proses inisialisasi sementara program aslinya masih berjalan. Setelah berhasil keluar dan setidaknya masih ada proses (andRemainAfterExit=no), layanan dianggap dimulai.
Seringkali, daemon tradisional hanya terdiri dari satu proses. Oleh karena itu, jika hanya satu proses yang tersisa setelah proses asli berakhir, systemd akan menganggap proses itu sebagai proses utama dari layanan. Dalam hal ini, variabel $MAINPID akan tersedia di ExecReload=,ExecStop=, dll.
Jika ada lebih dari satu proses yang tersisa, systemd tidak akan dapat menentukan proses utama, sehingga tidak akan dianggap ada. Dalam hal ini, $MAINPID tidak akan diperluas ke apa pun. Namun, jika proses memutuskan untuk menulis file PID biasa, systemd akan dapat membaca PID utama dari sana. Silakan atur PIDFile=sesuai.