Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
관련문서
  1. 시스템 프로그래밍 미니사이트
<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=kill">kill</a>(2)

1장. kill(2)

차례
1.1절. 사용법
1.2절. 설명
1.3절. 반환값
1.4절. 에러
1.5절. 예제

프로세스(:12)에게 시그널(:12)을 보낸다.


1.1절. 사용법

#include <sys/types.h>

#include <signal.h>

int kill(pid_t pid, int sig);
		


1.2절. 설명

kill(2) 시스템콜(:12)은 특정 프로세스나 프로세스 그룹에 시그널을 보내기 위해서 사용한다.

  • pid 가 양수이면, sig 시그널을 pid 로 보낸다.

  • pid 가 0이면 현재 프로세스가 속한 프로세스 그룹의 모든 프로세스에게 sig 시그널을 보낸다.

  • pid 가 -1 이면, 1번 프로세스를 제외한 모든 프로세스에서 sig 시그널을 보낸다.

  • pid 가 -1 보다 작으면, -pid 프로세스(:12)가 포함된 모든 그룹(:12)의 프로세스(:12)에게 sig 시그널을 보낸다.

  • sig가 0이면 어떤 시그널(:12)도 보내지 않지만, 에러 검사는 할수 있다.

시그널의 종류는 Unix(:12) 시스템마다 조금씩 다를수 있다. 자신의 Unix 시스템에서 사용할수 있는 시그널 목록은 kill(1) 쉘 명령어를 이용해서 확인할수 있다.

[root@localhost test]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
...
		


1.3절. 반환값

성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno(:12) 값을 설정한다.


1.4절. 에러

다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.

EINVAL

잘못된 시그널번호(:12)를 지정했을경우

ENOTSOCK

s 가 소켓(:12)이 아닌 파일일경우

ENOTCONN

소켓(:12)이 연결되어 있지 않을경우

ENOBUFS

시스템(:12)에 연산을 위해서 이용할수 있는 자원이 부족할때


1.5절. 예제

#include <sys/types.h>

#include <signal.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int pid;
    int sig_num;

    // 아규먼트로 pid 번호와 
    // 전송할 signal 번호를 받아들여서 
    // 이를 해당 pid 로 보낸다. 
    pid = atoi(argv[1]);
    sig_num = atoi(argv[2]);

    kill(pid, sig_num);
}