Việc một quá trình bị "từ chối" chỉ có ý nghĩa đối với lớp vỏ tương tác đã tạo ra quá trình này. Điều đó có nghĩa là shell không bao gồm (nữa) quy trình trong bảng công việc của nó và SIGHUP sẽ không được gửi đến quy trình này khi shell thoát ra. Nó không thực sự liên quan đến câu hỏi của bạn.
Về những gì xảy ra với các đầu ra được gửi đến một thiết bị đầu cuối ảo đã bị xóa: Tôi đã tự mình thực hiện một số thử nghiệm và tôi nhận thấy rằng /dev/pts/x
các thiết bị không thể truy cập được và sẽ không được phân bổ lại cho đến khi tất cả các bộ lọc chỉ ra chúng đã bị đóng. Vì vậy, tôi không thể thấy lý do tại sao ghi vào thiết bị đầu cuối bị xóa sẽ được lưu trữ. Tôi đoán điều này thậm chí không được xác định bởi POSIX.
Về việc lấy đầu ra của một số quá trình ghi vào một thiết bị đầu cuối, tôi không nghĩ rằng nó có thể, ngay cả khi thiết bị đầu cuối vẫn còn sống. Tất cả những gì bạn có thể làm là lấy đầu vào trực tiếp vào thiết bị đầu cuối (tức là tổ hợp phím hoặc tổ hợp phím mô phỏng bằng phần chính của một pty). Nếu các tiến trình sẽ đọc trên stdin những gì được ghi vào thiết bị đầu cuối của chúng, điều đó sẽ dẫn đến một vòng lặp tự io cho hầu hết quá trình.
Về nhận xét cuối cùng về việc chấm dứt quá trình, tôi thực sự không biết điều gì đang xảy ra, nhưng tôi sẽ nghi ngờ những hành vi khá kỳ lạ với các tín hiệu (SIGTTOU, SIGTTIN, SIGHUP hoặc những người khác) liên quan đến trạng thái nền trước / nền của các nhóm quy trình, khi phiên nhà lãnh đạo thoát (ví dụ su
, trong trường hợp bạn đã đề cập).
Trả lời Chỉnh sửa: Không, liên quan đến đầu ra, không có gì thay đổi khi một quy trình bị từ chối: nó vẫn được gắn vào thiết bị đầu cuối kiểm soát của nó (trừ khi nó tự tách ra như daemon). Bạn có thể thấy rằng sử dụng ps
. Tuy nhiên, bạn sẽ không thể sử dụng fg
/ bg
/ jobs
các lệnh được cung cấp bởi shell nữa cho quy trình này. Điều đó có nghĩa là có thể khó để cung cấp nó với đầu vào từ thiết bị đầu cuối (yêu cầu phải nằm trong nhóm quy trình nền trước).
-
1. trừ khi quá trình sẵn sàng hoặc bị tấn công bằng một số công cụ sửa lỗi (xem các bình luận ở trên).