Sự khác nhau giữa tín hiệu SIGINT
và tín hiệu SIGTERM
là gì? Tôi biết rằng SIGINT
tương đương với cách nhấn Ctrl + C trên bàn phím, nhưng SIGTERM
là gì? Nếu tôi muốn dừng một số quy trình nền một cách duyên dáng, tôi nên sử dụng quy trình nào trong số này?kill -INT vs kill -TERM
Trả lời
Sự khác biệt duy nhất trong phản hồi là tùy thuộc vào nhà phát triển. Nếu nhà phát triển muốn ứng dụng phản hồi lại SIGTERM
khác với SIGINT
thì các trình xử lý khác nhau sẽ được đăng ký. Nếu bạn muốn dừng quá trình nền một cách duyên dáng, bạn thường sẽ gửi SIGTERM
. Nếu bạn đang phát triển một ứng dụng, bạn nên trả lời SIGTERM
bằng cách thoát ra một cách duyên dáng. SIGINT
thường được xử lý theo cùng một cách, nhưng không phải lúc nào cũng vậy. Ví dụ: thường thuận tiện khi trả lời SIGINT
bằng cách báo cáo trạng thái hoặc tính toán từng phần. Điều này giúp người dùng dễ dàng chạy ứng dụng trên thiết bị đầu cuối để nhận kết quả một phần, nhưng hơi khó khăn hơn khi chấm dứt chương trình vì nó thường yêu cầu người dùng mở một trình bao khác và gửi SIGTERM
qua kill
. Nói cách khác, nó phụ thuộc vào ứng dụng nhưng quy ước là phản hồi SIGTERM
bằng cách tắt một cách duyên dáng, hành động mặc định cho cả hai tín hiệu là chấm dứt và hầu hết các ứng dụng phản hồi SIGINT
bằng cách dừng một cách duyên dáng.
Nếu tôi muốn dừng quá trình nền một cách duyên dáng, tôi nên sử dụng quy trình nào trong số này?
Các unix danh sách các tín hiệu hẹn hò trở lại thời gian khi máy tính có thiết bị đầu cuối nối tiếp và modem, đó là nơi mà các khái niệm về một kiểm soát thiết bị đầu cuối bắt nguồn. Khi một modem giảm sóng mang, đường dây là treo lên.
SIGHUP (1) do đó sẽ biểu thị mất kết nối, buộc chương trình phải thoát hoặc khởi động lại. Đối với daemon như syslogd và sshd, xử lý không có kết nối đầu cuối được cho là tiếp tục chạy, SIGHUP thường là tín hiệu được sử dụng để khởi động lại hoặc đặt lại.
SIGINT (2) và SIGQUIT (3) theo nghĩa đen là "gián đoạn" hoặc "thoát", "từ bàn phím", cho phép người dùng kiểm soát ngay lập tức nếu một chương trình sẽ có kết nối. Với thiết bị đầu cuối dựa trên ký tự vật lý, đây là cách duy nhất để dừng chương trình !
SIGTERM (15) không liên quan đến bất kỳ xử lý thiết bị đầu cuối nào và chỉ có thể được gửi từ một quy trình khác. Đây sẽ là tín hiệu thông thường để gửi đến một quá trình nền.
SIGINT là tín hiệu ngắt chương trình, sẽ được gửi khi người dùng nhấn Ctrl + C. SIGTERM là một tín hiệu chấm dứt, điều này sẽ được gửi đến một quá trình để yêu cầu chấm dứt quá trình, nhưng nó có thể bị bắt hoặc bỏ qua bởi quy trình cụ thể đó.
Đây là liên kết mô tả sự khác biệt và cũng là những điều quan trọng khác. http://programmergamer.blogspot.in/2013/05/clarification-on-sigint-sigterm-sigkill.html
- 1. Akka Kill vs. Stop vs. Poison Pill?
- 2. gần/kill giao dịch
- 3. adb kill-server không phản hồi?
- 4. kill -3 để lấy java thread dump
- 5. quá trình và Kill tiểu trình trong Ruby trên Windows
- 6. Kill Process sau một thời gian nhất định + C#
- 7. Làm thế nào để bảo vệ đầu ra kill
- 8. Vui lòng giải thích: trap 'sudo kill -9 - - $$' EXIT
- 9. cách điều khiển (start/kill) một quá trình nền (ứng dụng máy chủ) trong ruby
- 10. Làm cách nào để biết liệu bash kill có sử dụng pid hay jobspec không?
- 11. Thực hiện tương đương với "Kill Process Tree" trong C++ trên windows
- 12. Làm cách nào để nhận tín hiệu KILL hoặc HUP hoặc Người dùng hủy?
- 13. Tín hiệu KILL có thoát khỏi quy trình ngay lập tức không?
- 14. Cách đúng để đóng ứng dụng GUI WPF: GetCurrentProcess(). Kill(), Environment.Exit (0) hoặc this.Shutdown()
- 15. emacs sao chép kill-ring vào clipboard của hệ thống ở chế độ nowindow
- 16. trận đấu Mysql ... chống lại vs đơn giản như "% term%"
- 17. int ** vs int [ROWS] [COLS]
- 18. int vs NSNumber vs NSInteger
- 19. int * int vs (int * int) trong OCaml loại tổng
- 20. Trong hậu lệnh móc, đây-lệnh cho giết chữ đã trở thành kill vùng bằng cách nào đó
- 21. bash trap của TERM - tôi đang làm gì sai?
- 22. lỗi ansi-term/multi-term trong bộ lọc quy trình
- 23. Giải thích về int? vs int
- 24. Biến lớp int int vs mảng
- 25. Java: Enum vs. Int
- 26. Uninitialized int vs Integer
- 27. NSNumber vs Int
- 28. System.Convert.ToInt vs (int)
- 29. Int32 vs Int64 vs Int trong C#
- 30. int vs size_t trên 64bit