답변:
의 매뉴얼 페이지 에 따르면 sigpending
:
sigpending ()은 호출 스레드에 전달하기 위해 보류중인 신호 세트 (즉, 차단되는 동안 발생 된 신호)를 리턴합니다.
따라서 프로세스가 D
(무정전 절전 상태) 상태 에서 벗어날 때까지 대기하는 신호 (sigterm, sigkill, sigstop 등)를 의미합니다 . 일반적으로 프로세스는 I / O를 대기 할 때 해당 상태에 있습니다. 그 수면을 방해 할 수 없습니다. sigkill ( kill -9
) 조차 프로세스가 깨어날 때까지 기다릴 수 없습니다 (신호가 너무 오랫동안 전달 대기 중입니다).
다른 불분명 한 값에 대해서는의 매뉴얼 페이지 를 살펴보십시오 limits.conf
.
sigqueue
그리고 setrlimit
당신이 정말로보고해야한다고합니다.
공정 한계는 setrlimit (2)에 의해 제어됩니다.
따라서 맨 페이지를 살펴볼 수 있습니다.
RLIMIT_SIGPENDING (리눅스 2.6.8부터)
호출 프로세스의 실제 사용자 ID에 대기 할 수있는 신호 수의 한계를 지정합니다. 이 한계를 확인하기 위해 표준 및 실시간 신호가 계산됩니다. 그러나이 제한은 sigqueue (3)에만 적용됩니다. kill (2)를 사용하여 프로세스에 아직 대기열에없는 신호 중 하나의 인스턴스를 대기열에 넣을 수 있습니다.
일반적으로 syscalls 맨 페이지를 살펴볼 때 가장 자세한 정보를 얻을 수 있습니다. C는 UNIX / Linux의 모국어입니다.
sigpending 31603
있습니다. 왜 이러한 제한이 이상한 숫자 (2의 거듭 제곱이 아님)입니까?