Joinc 팀블로그 리눅스 메뉴얼 정리 Joinc 위키
댓글

Recent Comments

Powered by Disqus
팀블로그 카테고리
  전체 (1105)
   공지사항 (1)
   검색엔진 (21)
   기술동향 (58)
   게임 (2)
   독서 (6)
   리눅스 (12)
   보안 (1)
   사회문제 (22)
   어셈블리 (43)
   영화 (3)
   오픈소스 (10)
   음악 (9)
   인물 (1)
   포인터 (4)
   프로그래머 (23)
   팀블로그 (20)
   테터툴즈 (29)
   C/C++ (152)
   FireFox (11)
   Gimp (2)
   Google (98)
   Java (13)
   Perl (2)
   Pthread (11)
   STL (13)
   TCP/IP (8)
   Tools (31)
   Web2.0 (42)
   Wiki (1)
«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
2007/06/02 11:03

linux man : kill - 프로세스에 시그널을 전송한다.

이 문서는 수정될 수 있습니다. 최신 내용은 Joinc Wiki를 확인해 주세요.

관련문서

  1. 시스템 프로그래밍 미니사이트

1장. kill(2)

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

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


1.1절. 사용법

#include <sys/types.h>

#include <signal.h>

int kill(pid_t pid, int sig);


1.2절. 설명

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

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

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

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

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

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

시그널의 종류는 Unix 시스템마다 조금씩 다를수 있다. 자신의 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 값을 설정한다.


1.4절. 에러

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

EINVAL

잘못된 시그널번호를 지정했을경우

ENOTSOCK

s 가 소켓이 아닌 파일일경우

ENOTCONN

소켓이 연결되어 있지 않을경우

ENOBUFS

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


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);
}
:::