GNU Linux (Arch Linux)의 SIGINFO가 없습니다.


12

응용 프로그램을 개발 중이며 필요에 따라 일부 런타임 통계를 콘솔에 인쇄하고 싶습니다. kill신호가 즉시 떠 올랐습니다.

Wiki에서 유닉스 신호 를 읽는 SIGINFO것은 다음과 같은 이유로 갈 것 같습니다.

  • 목적을 위한 입니다
  • 신호 처리기가 구현되지 않은 경우 프로세스를 종료하지 않습니다 ( 여기서는SIGUSRx 참조 하십시오 ).

그러나의 출력을 검사하면 kill -l서버 에이 신호가 구현되지 않은 것 같습니다.

내 질문은 :

  1. SIGINFO내 시스템에서 왜 누락 되었습니까? 모든 GNU Linux 시스템에는 없는가?
  2. 이 신호를 활성화하는 쉬운 방법이 있습니까 (즉, 커널 / glibc 재 컴파일이 아님)? 그렇지 않다면 어려운 방법은 무엇입니까?
  3. 대상 프로세스에서 처리하지 않으면 부작용을 일으키지 않는 목적으로 어떤 대체 신호를 사용할 수 있습니까? ( glibc 설명서 에서 다른 적절한 신호를 찾을 수 없으므로 이미 없음을 가정합니다 )

리눅스 메타 정보 :

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

업데이트 : 나는이 신호가 왜 BSD 이외의 다른 시스템에서 조건 적으로 제외되는지에 대한 더 많은 정보를 찾고 있습니다 (아래 주석 참조). 이 신호는 여러 목적에 매우 유용한 것으로 보이므로 그저 변덕스러운 문제라고 믿기가 어렵습니다. Linux에서이 신호를 사용할 수있는 진정한 쇼탑은 무엇입니까?


2
? ^T의 출력에 나타납니다 stty -a.
Mark Plotnick

아, 그렇지 않습니다. 설명 된 동작을 ddMac에서 잘못 알고 있어야합니다 . 실행 ^T하는 동안 ddLinux 컴퓨터에서 아무것도 수행하지 않습니다. 이에 따라 질문을 업데이트합니다.
Robert Rossmann

예, Ctrl-T 및 SIGINFO는 BSD (및 MacOSX) 기능입니다.
Mark Plotnick

그러나이 신호는 Linux 시스템에서 사용 하는 GNU C 라이브러리에 정의되어 있습니다. 그런 다음 의도적으로 비활성화됩니까?
Robert Rossmann

1
@RobertRossmann, 신호는 커널에 의해 전달됩니다. 문제는 Linux 커널이이를 구현하지 않는 이유입니다 (SysV 신호를 복사했기 때문에).
Ángel

답변:


4

이것을 추가하는 것에 대한 이야기가 (Linux 0.x-1.x 일에 다시 돌아 왔습니다.) .

당신이 요구하는 것은 기능의 작은 부분 일뿐입니다 (즉, stty info커널이 프로세스 그룹 에 전달 SIGINFO하게하는 control-T 항목에 대해 이야기하고 있습니다 tty)-그 부분은 "쉬운"- 그러나 커널 이 신호를 처리 하지 않을 때 프로세스 상태에 대한 정보를보고하게 하는 경우 어쨌든 ") 어려워요-ISTR은 정보를 정확하게 표시하는 것과 관련하여 보안 / 신뢰 문제가 있으며 보안주의 키 경로와 연결해야하는지 여부도 있습니다. 즉, "쉬운"버전에는 신호 만 보내는 값이있을 수 있습니다 ...

(개인 메모리에서; 빠른 웹 검색으로 명백한 것이 나타나지 않지만 토론을 찾기 위해 실제로 오래된 아카이브로 파고 들어야한다고 생각 합니다.)


1

귀하의 질문에 대하여 1) :

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

SIGINFO 29,-,- SIGPWR 의 동의어

(신호 29이다 SIGINFO / SIGPWR 알파하지만에 SIGLOST 하여 SPARC에).

SIGPWR (POSIX.1-2001에 지정되지 않음)은 일반적으로 표시되는 다른 UNIX 시스템에서 기본적으로 무시됩니다.

이 정의 SIGINFO에 따라 알파 또는 스파크 아키텍처에서만 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.