เหตุใดเราใช้ setsid () ในขณะที่ daemonizing กระบวนการ


18

เพื่อสร้างการบริการ (ภูต) setsid()เราแยกแม่และทำให้มันออกในขณะที่ทำให้เด็กที่จะเป็นผู้นำเซสชั่นโดยการเรียก นอกจากนี้ทำไมเราจึงใช้ setsid () กระบวนการเด็กกำพร้าของเราได้รับการดูแลโดยกระบวนการinit(แม้ว่าจะไม่ใช่ทุกกรณี)

ทำไมเราถึงใช้ stsid () มีความสัมพันธ์ใด ๆ ระหว่างsetsid()และการจัดการSIGHUPสัญญาณ

คำตอบ:


13

เราใช้ setsid () เพราะถ้าเราเพิ่งฆ่าผู้ปกครองเด็กจะถูกฆ่าด้วยเช่นกัน setsid ()

สร้างเซสชันใหม่หากกระบวนการเรียกไม่ใช่หัวหน้ากลุ่มกระบวนการ กระบวนการเรียกใช้เป็นผู้นำของเซสชันใหม่ผู้นำกลุ่มกระบวนการของกลุ่มกระบวนการใหม่และไม่มีเทอร์มินัลการควบคุม

ผู้ปกครองเป็นหัวหน้ากลุ่มกระบวนการแรกฆ่ามันหรือฆ่าเซสชัน / เทอร์มินัลฆ่ากลุ่มซึ่งเป็นสาเหตุที่เราเปลี่ยนผู้นำ (และสร้างเซสชันใหม่ในขณะที่เราอยู่ที่นี่)


1
THST จริง แต่ไม่ได้มี realtion ใด ๆ กับสัญญาณ SIGHUP เป็นฉันนบนอบมันคือการส่งเมื่อสถานีควบคุมจะหายไป
Kalu

7
พาเรนต์รับ SIGHUP เมื่อปิดเทอร์มินัลการควบคุม เด็กจะไม่ได้รับ SIGHUP เนื่องจากอยู่ในช่วงใหม่
ZN13
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.