Khi bạn đóng một thiết bị đầu cuối, thiết bị đầu cuối sẽ gửi tín hiệu SIGHUP đến trình bao; vỏ, lần lượt, gửi tín hiệu SIGHUP cho tất cả các nhóm quy trình con của nó, bao gồm các nhóm quy trình nền;
Làm thế nào mỗi quy trình đơn sẽ phản ứng với tín hiệu hoàn toàn theo quy trình: nếu quy trình không xác định trình xử lý tín hiệu và báo cho hạt nhân (thông qua một số tòa nhà như signal()
hoặc sigaction()
) mà nó muốn xử lý nó, thì nhân thực thi trình xử lý mặc định cho tín hiệu, trong trường hợp tín hiệu SIGHUP bao gồm việc kết thúc quá trình.
Tuy nhiên, khi bạn chạy một lệnh với sudo
, UID của sudo
tiến trình và tiến trình con của nó được đặt thành 0
(root); nói chung, trừ khi UID của quá trình gửi tín hiệu là 0
(root) hoặc giống như quy trình đích, kernel sẽ loại bỏ tín hiệu (nghĩa là: một quá trình không thể gửi tín hiệu đến một quá trình do người dùng khác sở hữu, trừ khi quá trình đó gửi tín hiệu được sở hữu bởi root); đó là lý do tại sao một quy trình do người dùng chạy như phiên bản Bash do thiết bị đầu cuối chạy không thể SIGHUP một sudo
quy trình và cuối cùng, việc đóng một thiết bị đầu cuối không ảnh hưởng đến quá trình bắt đầu sudo
.