tôi đã sử dụng ping trong một thiết bị đầu cuối gnome window và tôi có thể xác nhận những quan sát của bạn. Tôi nghĩ đó là một vấn đề, rằng một quá trình có thể bị bỏ chạy mà không có nơi nào để giao tiếp. Tôi sẽ cố gắng giải thích những gì tôi nhận thấy (nhưng tôi không khẳng định rằng tôi hiểu tại sao, có thể cho phép các chương trình có GUI riêng hoạt động mà không cần nohup sau khi thoát khỏi đánh đập, khi bắt đầu trong cửa sổ đầu cuối).
Khi tôi lối ra tôi đang thoát khỏi đánh đập chạy trong cửa sổ đầu cuối và ping tiếp tục chạy, nhưng không có nơi nào để viết.
Khi tôi giết chết quá trình, tôi giết đánh đập quá trình trong cửa sổ đầu cuối. tôi không tìm thấy một cách rõ ràng thiết bị đầu cuối gnome quá trình để giết, bởi vì quá trình /usr/lib/gnome-terminal/gnome-terminal-server chạy tất cả chúng. Tôi không chắc rằng đây là những gì bạn đang làm, nhưng đó là những gì tôi đoán.
Khi tôi đóng cửa sổ (bằng nút x), tôi thoát khỏi quy trình cửa sổ (do đó buộc các quy trình con của nó dừng bao gồm đánh đập và ping). Đây là một sự khác biệt rõ ràng so với hai trường hợp trước đó.
Khi tôi làm bài tập tương ứng với xterm, sẽ có một quy trình riêng với tên 'xterm'.
Khi tôi lối ra tôi đang thoát khỏi đánh đập chạy trong cửa sổ đầu cuối và ping tiếp tục chạy, nhưng không có nơi nào để viết.
Khi tôi giết chết quá trình, tôi giết xterm tiến trình của cửa sổ đầu cuối, (từ đó buộc các tiến trình con của nó dừng lại, bao gồm đánh đập và ping).
Khi tôi đóng cửa sổ (bằng nút x), tôi thoát khỏi quy trình cửa sổ (do đó buộc các quy trình con của nó dừng lại, bao gồm đánh đập và ping).
Bạn đã biết rồi, rằng bạn có thể sử dụng nohup (cùng với &) nếu bạn muốn tiến trình con tiếp tục sau khi đóng cửa sổ đầu cuối, nơi tiến trình con được bắt đầu.
Chỉnh sửa 1: Nhận xét cuối cùng:
Từ người đàn ông bash
Nếu một lệnh bị chấm dứt bởi toán tử điều khiển &, trình bao
thực thi lệnh ở chế độ nền trong một lớp con. Vỏ không
không đợi lệnh kết thúc và trạng thái trả về là 0.
Chúng tôi đã nhận thấy rằng không có tín hiệu dừng subshell và quá trình bắt đầu trong/từ subshell đó, khi đánh đập được thoát, ít nhất là không khi chạy trong cửa sổ đầu cuối. Nhưng cửa sổ thiết bị đầu cuối cuộc gọi đã bị đóng. Tôi nghĩ rằng sau khi thoát bash, cửa sổ đầu cuối không còn biết về lớp con nữa và quá trình bắt đầu trong/từ lớp con đó, và do đó nó không thể dừng chúng.
Chỉnh sửa 2: Tôi đã yêu cầu trợ giúp tại Unix & Linux - Vui lòng đọc câu trả lời.