Tôi đang phát triển một ứng dụng và tôi muốn nó in một số thống kê thời gian chạy lên bàn điều khiển theo yêu cầu. killvà tín hiệu đến với tâm trí tôi ngay lập tức.
Đọc qua các tín hiệu Unix trên Wiki, SIGINFOcó vẻ như là cách để đi bởi vì:
- Nó được dành cho các mục đích này
- Không chấm dứt quá trình nếu trình xử lý tín hiệu không được thực hiện (trái với
SIGUSRx- xem tại đây )
Tuy nhiên, bằng cách kiểm tra đầu ra của kill -l, có vẻ như máy chủ của tôi không thực hiện tín hiệu này.
Câu hỏi của tôi là:
- Tại sao
SIGINFOthiếu trên hệ thống của tôi? Có phải nó vắng mặt trên tất cả các hệ thống GNU Linux? - Có cách nào dễ dàng (nghĩa là không biên dịch lại kernel / glibc) để bật tín hiệu này không? Nếu không, điều gì sẽ là khó khăn?
- Tôi có thể sử dụng tín hiệu thay thế nào cho mục đích của mình mà không gây ra bất kỳ tác dụng phụ nào nếu không được xử lý bởi quy trình mục tiêu? (Tôi đã giả sử không có vì tôi không thể tìm thấy bất kỳ tín hiệu phù hợp nào khác trong hướng dẫn sử dụng của glibc )
Thông tin chi tiết về Linux:
Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux
Cập nhật: Tôi vẫn đang tìm kiếm thêm thông tin về lý do tại sao tín hiệu này bị loại trừ một cách có điều kiện khỏi các hệ thống khác ngoài BSD (xem bình luận bên dưới). Tín hiệu này có vẻ khá hữu ích cho nhiều mục đích, vì vậy thật khó để tôi tin rằng đó chỉ là vấn đề bất chợt - vậy showstopper thực sự cho tín hiệu này có sẵn trên Linux là gì?
ddvới điều đó trên máy Mac của tôi. ^Ttrong quá trình ddthực thi không có gì trên máy Linux - tôi sẽ cập nhật câu hỏi tương ứng.
^Txuất hiện trong đầu ra củastty -a?