Mengapa kami menggunakan setsid () saat daemonisasi suatu proses?

18

UNTUK membuat layanan (daemon), kita bercabang dengan orangtua dan membuatnya keluar sementara menjadikan anak menjadi pemimpin sesi dengan memanggil setsid(). Selain itu mengapa kita menggunakan setsid ()? Proses anak yatim kami ditangani oleh init(meskipun tidak semua kasus) proses.

Mengapa kita menggunakan stsid ()? Apakah ada hubungan antara setsid()dan penanganan SIGHUPsinyal.

Kalu
sumber

Jawaban:

13

Kami menggunakan setsid () karena jika kami hanya membunuh orang tua, anak tersebut juga akan dibunuh, setsid ()

membuat sesi baru jika proses panggilan bukan pemimpin grup proses. Proses panggilan adalah pemimpin sesi baru, pemimpin grup proses dari grup proses baru, dan tidak memiliki terminal pengendali.

Orang tua adalah pemimpin grup proses pertama, membunuhnya - atau membunuh sesi / terminal - membunuh grup, itulah sebabnya kami mengganti pemimpin (dan membuat sesi baru saat kami berada di sana).

ZN13
sumber
1
Itu benar tetapi apakah itu memiliki realtion dengan sinyal SIGHUP karena saya kow itu dikirim ketika terminal pengendali hilang
Kalu
7
Induk mendapat SIGHUP ketika terminal pengendali ditutup. Anak tidak akan mendapatkan SIGHUP karena sedang dalam sesi baru.
ZN13