Tại sao chỉ có hai tín hiệu do người dùng xác định?


11

Trong danh sách các tín hiệu được xác định trong hệ thống linux, có hai tín hiệu được nêu là tín hiệu do Người dùng Xác định ( SIGUSR1SIGUSR2). Các tín hiệu khác sẽ được tăng hoặc bắt trong các tình huống cụ thể, nhưng SIGUSR còn lại để sử dụng cho ứng dụng của người dùng.

Vậy tại sao chỉ có hai tín hiệu?

Câu trả lời:


13

Về mặt lịch sử, Unix chỉ có hai tín hiệu này, nhưng các hệ thống hiện đại có các tín hiệu thời gian thực SIGRTMIN... SIGRTMAX.

Do ngữ nghĩa lập dị và không thể điều khiển được của các API tín hiệu, hầu như không có trường hợp sử dụng nào mà tín hiệu sẽ được ưa chuộng hơn các cơ chế truyền thông khác như đường ống. Do đó, việc phân bổ một số tín hiệu mới chưa bao giờ được xem là cần thiết.


Cảm ơn. Trong trường hợp của tôi, tôi xử lý SIGUSR1 để cấu hình lại. Điều đó có nghĩa là khi quản trị viên muốn thay đổi cấu hình của quy trình đang chạy của tôi, nó sẽ thay đổi tệp cấu hình và gửi SIGUSR1 tới PID của tôi (dễ sử dụng đường ống hơn ở đây). Và tôi sử dụng SIGUSR2 để tắt quy trình sạch. Tôi không cần sử dụng tín hiệu nào ngoài hai tín hiệu này, nhưng một số tính năng thời gian chạy có thể được thực hiện bằng cách xử lý các tín hiệu do người dùng xác định khác!
saeedn

2
@saeedn Tại sao bạn không sử dụng SIGTERM để tắt quy trình sạch? Đó là những gì nó làm. Nhiều máy chủ khác sử dụng SIGHUP (chỉ có ý nghĩa khác trong quy trình tương tác) làm tín hiệu để tải lại các tệp cấu hình, vì vậy bạn có thể xem xét điều đó.
Random832

@ Random832 Bạn nói đúng, tôi biết bạn nói gì. Nhưng vấn đề tôi nghĩ đến là nếu tôi hết 31 lựa chọn tín hiệu thì sao?
saeedn

1
Tôi có thể nhận thêm thông tin về các tín hiệu SIGRTMIN ... SIGRTMAX ở đâu? Chúng được định nghĩa ở đâu khi chúng được sử dụng?
Strubbl

6

Tín hiệu chỉ cung cấp một phương tiện truyền thông nguyên thủy. Đặc biệt, không có cách nào để đính kèm bất kỳ thông tin nào cho họ. Người nhận chỉ biết số tín hiệu, không biết danh tính của người gửi. Nhiều tín hiệu có thể được tập hợp thành một. Với tất cả những hạn chế này, không có nhiều mục đích hữu ích cho tín hiệu.

Đối với các mục đích phức tạp hơn, sử dụng các phương tiện tương tác phức tạp hơn, chẳng hạn như đường ống hoặc ổ cắm.

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.