2010-06-27 24 views
9

Mọi ý tưởng về điều này? Có một loại hàng đợi tín hiệu nào đó, hay nó bị rơi xuống?Điều gì xảy ra nếu trong quá trình xử lý tín hiệu trong UNIX, tín hiệu tương tự sẽ được gửi đến chương trình?

Trong khi chúng tôi đang ở câu hỏi này, có đúng là các trình xử lý tín hiệu nên thực hiện công việc tối thiểu nhất có thể không?

Tôi đọc ở đâu đó rằng một bộ xử lý tín hiệu nên sử dụng một đường ống và chỉ viết một byte vào nó, cho biết chương trình nên làm gì. Sau đó, ở một nơi khác chương trình sẽ kiểm tra định kỳ đường ống và gửi đi dựa trên byte trong đó. (Tôi có thể đã hiểu sai)

Cảm ơn, Boda Cydo.

Trả lời

8

Để trả lời phần thứ hai của câu hỏi của bạn, "có đúng là các trình xử lý tín hiệu nên làm công việc tối thiểu nhất có thể không?" câu trả lời là có, bởi vì có một tập hợp rất tối thiểu các chức năng là "tín hiệu không đồng bộ an toàn" và do đó có thể được gọi từ các trình xử lý tín hiệu. An toàn tín hiệu không đồng bộ là loại hình thức tái nhập được cải tiến. Nếu foo() là tín hiệu không đồng bộ an toàn, điều đó có nghĩa là an toàn khi gọi foo() trong bộ xử lý tín hiệu, ngay cả khi foo() đã được thực hiện khi tín hiệu được nâng lên.

Bạn có thể nhận danh sách đầy đủ các chức năng an toàn không đồng bộ của tín hiệu bằng cách xem trang người dùng phần 7 cho signal (man 7 signal). Gọi bất kỳ chức năng nào khác ngoài một chức năng từ bên trong một trình xử lý tín hiệu, trực tiếp hoặc gián tiếp, gọi hành vi không xác định.

Cách tiếp cận "viết byte vào đường ống" là cách tuyệt vời để xử lý tín hiệu mà không bị hạn chế đối với chức năng an toàn tín hiệu không đồng bộ, đặc biệt là nếu chương trình của bạn đã định hướng quanh vòng select.

7

Để trả lời phần đầu tiên của câu hỏi, mặc định như sau: Nếu tín hiệu này giống như tín hiệu hiện đang được xử lý, tín hiệu mới sẽ bị chặn (được giữ trong hàng đợi) và gửi khi trình xử lý trả về. Nếu một số tín hiệu khác đến, bộ điều khiển cho tín hiệu mới được gọi. c.f. the glibc manual.

+0

Hoặc hành động mặc định cho tín hiệu được thực hiện nếu tín hiệu không được xử lý –

Các vấn đề liên quan