GNU Linux(Arch Linux)에서 SIGINFO가 누락되었습니다.

GNU Linux(Arch Linux)에서 SIGINFO가 누락되었습니다.

저는 애플리케이션을 개발 중이며 요청 시 일부 런타임 통계를 콘솔에 인쇄할 수 있기를 원합니다. kill나는 즉시 신호를 생각했습니다.

끝까지 읽어라유닉스 신호위키에서는 다음과 같은 SIGINFO이유 때문에 이것이 갈 길인 것 같습니다.

  • 이것은고의로이러한 목적을 위해
  • 신호 처리기가 구현되지 않으면 프로세스가 종료되지 않습니다 SIGUSRx.여기)

그러나 출력을 검사해 보면 kill -l내 서버가 이 신호를 구현하지 않는 것으로 보입니다.

내 질문은 다음과 같습니다

  1. SIGINFO내 시스템에 없나요? 모든 GNU Linux 시스템에서 사용할 수 없나요?
  2. 이 신호를 활성화하는 쉬운(즉, 커널/glibc 재컴파일이 필요하지 않은) 방법이 있습니까? 그렇지 않다면 어떤 힘든 길이 있었나요?
  3. 목적을 달성하기 위해 어떤 대체 신호를 사용할 수 있습니까?어떠한 부작용도 일으키지 않습니다대상 프로세스에서 처리되지 않으면? (다른 적절한 신호를 찾을 수 없었기 때문에 '아니요'라고 가정했습니다.glibc수동)

Linux 메타 정보:

Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux

고쳐 쓰다:나는 이 신호가 BSD 이외의 시스템에서 조건부로 제외되는 이유에 대한 자세한 정보를 계속 찾고 있습니다(아래 설명 참조). 이 신호는 여러 목적에 매우 유용한 것으로 보이므로 이것이 단지 변덕스러운 질문이라고 믿기 어렵습니다. 그렇다면 Linux에서 이 신호를 사용할 수 있는 진짜 하이라이트는 무엇입니까?

답변1

이것을 추가하는 것에 대한 논의가 있었습니다(리눅스 0.x-1.x 시절)(BSD 시스템에서 유용했기 때문입니다). 그러나 제 기억이 맞다면 당시 Linux에서 올바른 일을 하는 것은 Linux에서보다 훨씬 더 나빴습니다. BSD 더 어려운 이유가 있습니다.

기능의 작은 부분(즉, 커널이 프로세스 그룹 에 stty info기능을 전달하도록 하는 control-T 항목 에 대해 이야기하고 있음)에 대해서만 묻는 것입니다. 해당 부분은 "간단"하지만 커널이 보고하도록 하십시오. 관련 프로세스 상태 정보SIGINFOtty아니요신호 처리(당시 이를 지원하는 항목이 거의 없었기 때문에 이 기능은 대부분 "이 프로세스가 회전하고 있거나 정지되어 있습니까?" 및 "정확히 어떤 프로세스입니까?"에 관한 것임)는 훨씬 더 어려웠습니다. 심지어 보안/신뢰 문제도 있었습니다. ISTR 정보 정확하게 이 정보와 보안 주의 키 경로와 연결되어야 하는지 여부를 표시합니다. 즉, 신호만 보내는 "간단한" 버전에는 어느 정도 가치가 있을 수 있습니다.

(개인 기억에 근거한 것입니다. 빠른 웹 검색으로 명확한 내용은 나오지 않았지만 더 깊이 파고 들어야 할 것 같습니다.진짜토론을 위해 오래된 아카이브를 찾을 수 있습니다. )

답변2

귀하의 질문 1)에 관해서 :

man 7 signal아치 리눅스 시스템 에서 :

신호 정보 29,-,- 동의어SIGPWR

(신호 29는신호 정보/SIGPWR알파에서는 하지만신호 손실스파크에. )

SIGPWR (POSIX.1-2001에서는 지정되지 않음) 일반적으로 이 문제가 발생하는 다른 UNIX 시스템에서는 기본적으로 무시됩니다.

이 정의는 SIGINFO알파 또는 스파크 아키텍처에만 적용됩니다.

답변3

이는 Linux가 Unix가 아니기 때문입니다. 즉, 이 경우 열등함을 의미합니다. 오래된 DEC 시스템에도 control-t가 있었습니다. 내가 아는 한 그것은 매우 유용하다. 예를 들어 "TOPS-10 운영 체제 명령 매뉴얼"을 찾아보면 Unix 이전에도 마찬가지였습니다. 예, control-t는 분명히 이를 상속받은 Unix 시스템에서 SIGINFO를 보냅니다.

관련 정보