NAME

pthread_kill - 스레드에게 시그널 보내기

SYNOPSIS

#include <signal.h>

int pthread_kill(pthread_t thread, int sig);

-pthread로 컴파일 및 링크.

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

pthread_kill():
_POSIX_C_SOURCE >= 199506L || _XOPEN_SOURCE >= 500

DESCRIPTION

pthread_kill() 함수는 호출자와 같은 프로세스 안에 있는 스레드인 thread에게 시그널 sig를 보낸다. thread에게 비동기적으로 시그널이 간다.

sig가 0이면 어떤 시그널도 보내지 않되, 오류 검사는 마찬가지로 수행한다.

RETURN VALUE

성공 시 pthread_kill()은 0을 반환한다. 오류 시 오류 번호를 반환하며 어떤 시그널도 전송되지 않는다.

ERRORS

EINVAL
유효하지 않은 시그널을 지정하였다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
pthread_kill() 스레드 안전성 MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

시그널 처리 방식은 프로세스 범위이다. 즉, 시그널 핸들러가 설치되어 있으면 스레드 thread에서 핸들러가 호출되지만 시그널 처리 방식이 "정지"나 "재개", "종료"이면 이 동작이 프로세스 전체에 영향을 끼치게 된다.

glibc의 pthread_kill() 구현은 NPTL 스레딩 구현 내부에서 쓰는 실시간 시그널들 중 하나를 보내려고 시도하면 오류(EINVAL)를 내놓는다. 자세한 내용은 nptl(7)을 보라.

POSIX.1-2008에서는 스레드 ID가 수명이 다한 후에 쓰이는 것을 구현체에서 탐지한 경우 pthread_kill()이 오류 ESRCH를 반환하기를 권장한다. glibc 구현에서는 유효하지 않은 스레드 ID를 탐지할 수 있는 경우에 이 오류를 반환한다. 하지만 POSIX에서는 또한 수명이 다한 스레드 ID를 사용하려는 시도가 규정되지 않은 동작을 만들어 내며 pthread_kill() 호출에 유효하지 않은 ID를 사용하려는 시도가 가령 세그먼테이션 오류를 일으킬 수 있다고 한다.

SEE ALSO

kill(2), sigaction(2), sigpending(2), pthread_self(3), pthread_sigmask(3), raise(3), pthreads(7), signal(7)


2021-03-22