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. kill
và 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, SIGINFO
có 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
SIGINFO
thiế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ì?
dd
với điều đó trên máy Mac của tôi. ^T
trong quá trình dd
thự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.
^T
xuất hiện trong đầu ra củastty -a
?