Tại sao chúng ta sử dụng setsid () trong khi trình bày quy trình?


18

Để tạo ra một dịch vụ (daemon), chúng ta rẽ nhánh cha mẹ và làm cho nó thoát ra trong khi làm cho đứa trẻ trở thành người dẫn đầu phiên bằng cách gọi setsid(). Hơn nữa, tại sao chúng tôi sử dụng setsid ()? Quá trình mồ côi của chúng tôi được chăm sóc bởi init(mặc dù không phải trong tất cả các trường hợp).

Tại sao chúng ta sử dụng stsid ()? Có bất kỳ mối quan hệ giữa setsid()SIGHUPtín hiệu xử lý .

Câu trả lời:


13

Chúng tôi sử dụng setsid () bởi vì nếu chúng ta giết cha mẹ, đứa trẻ cũng sẽ bị giết, setsid ()

tạo một phiên mới nếu quy trình gọi không phải là trưởng nhóm quy trình. Quá trình gọi là người lãnh đạo của phiên mới, người lãnh đạo nhóm quy trình của nhóm quy trình mới và không có thiết bị đầu cuối kiểm soát.

Phụ huynh là người lãnh đạo nhóm quy trình đầu tiên, giết nó - hoặc giết phiên / thiết bị đầu cuối - giết chết nhóm, đó là lý do tại sao chúng tôi chuyển đổi người lãnh đạo (và tạo một phiên mới trong khi chúng tôi làm việc đó).


1
Điều đó đúng nhưng nó có bất kỳ cảnh giới nào với tín hiệu SIGHUP không khi tôi gửi nó khi thiết bị đầu cuối điều khiển bị mất
Kalu

7
Phụ huynh nhận được SIGHUP khi đóng thiết bị đầu cuối điều khiển. Đứa trẻ sẽ không nhận được SIGHUP vì đó là trong một phiên mới.
ZN13
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.