kill

Autres langues

Langue: ko

Version: 1997년 9월 4일 (fedora - 25/11/07)

Autres sections - même nom

Section: 2 (Appels système)

이름

kill - 프로세스에게 시그널을 보낸다.

사용법

 #include <sys/types.h>
 
#include <signal.h> int kill(pid_t pid, int sig);

설명

kill 시스템 콜은 어떤 프로세스 그룹이나 프로세스에 시그널을 보낼 때 사용될 수 있다.

pid가 양수이면, sig 시그널은 pid로 보내진다.

pid가 0이면, sig는 현재 프로세스가 속한 프로세스 그룹의 모든 프로세스에 보내진다.

pid가 -1이면, sig는 1번 프로세스를 제외한 모든 프로세스에게 큰 번호의 프로세스에서 작은 번호 순으로 보내진다.

pid가 -1보다 작으면, sig-pid 프로세스 그룹의 모든 프로세스에 보내진다.

sig가 0이면, 어떤 시그널도 보내지지는 않지만, 에러 검사는 행해진다.

반환값

성공시, 0이 리턴된다. 에러시, -1이 리턴되고 errno가 적절히 설정된다.

에러

EINVAL
잘못된 시그널이 지정되었다.
ESRCH
프로세스나 프로세스 그룹이 존재하지 않는다. 존재하는 프로세스이지만 좀비(zombie)일 수도 있음에 주의하라. 좀비는 이미 종료했지만 아직 wait() 처리되지 않은 프로세스이다.
EPERM
시그널을 받는 프로세스중 어떤 프로세스에게 시그널을 보낼 권한이 없다. 프로세스가 pid 프로세스에 시그널을 보낼 권한을 가지려면 루트 권한을 가지거나, 보내는 프로세스의 실(real) 사용자 ID나 유효(effective) 사용자 ID가 받는 프로세스의 실 사용자 ID나 저장된 set-user-ID와 같아야만 한다.

버그

1번 태스크인 init 프로세스에게 시그널을 보낼 수 없다. 따라서 init 프로세스는 시그널 핸들러를 가질 수 없다. 이는 시스템이 사고로 다운되지 않게 하기 위해서 이다.

호환

SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3

관련 항목

_exit(2), exit(3), signal(2), signal(7)

역자

임종균 <hermes44@secsm.org>, 2000년 4월 20일