본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 kill 시그널 전송 함수 kill()

C언어 kill 시그널 전송 함수 kill()

· 댓글개 · 바다야크

C함수 kill 시그널 전송 kill()

kill() 함수는 쉘에서 프로세스를 죽이는 kill 명령과는 달리 프로세스에 시그널을 전송합니다. 물론, 프로세스에 SIGKILL을 보내면 쉘 명령의 kill과 같은 역활을 합니다.

  • 헤더: signal.h
  • 형태: int kill(pid_t pid, int sig)
  • 인수: pid_t pid
    int sig 시그널 번호
  • 반환: int 0 == 성공
    -1 == 실패

kill() 함수는 특정 프로세스 뿐만 아니라 같은 그룹 ID가 같은 모든 프로세스에게 동시에 시그널을 전송할 수 있으며, 권한 안에 있는 모든 프로세스에게도 시그널을 전송할 수 있습니다.

int kill(pid_t pid, int sig); 

첫 번째 인수는 pids는 KILL 대상 프로세스 ID, 두 번째 인수 sig는 시그널 번호입니다. pid는 프로세스 ID 값에 따라 아래와 같이 처리가 분류됩니다.

 

pid 의미
양수 지정한 프로세스 ID에만 시그널을 전송
0 함수를 호출하는 프로세스와 같은 그룹에 있는 모든 프로세스에 시그널을 전송
-1 함수를 호출하는 프로세스가 전송할 수 있는 권한을 가진 모든 프로세스에 시그널을 전송
-1 이외의 음수 첫 번째 인수 pid 의 절대값 프로세스 그룹에 속하는 모든 프로세스에 시그널을 전송

C언어 kill() 함수 예제

단순 문자 출력 예제 KILL 시그널 전송 예제
#include <stdio.h>
#include <unistd.h>

int main( void)
{
   while( 1 ){
      printf( "badayak.com\n");
      sleep( 1);
   }
   return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>

int main( int argc, char *argv[])
{
   if ( argc < 2){
      printf( "사용법: ./a.out [프로세스 ID]\n");
   }
   else{
      kill( atoi( argv[1]), SIGKILL);
   }
}
소스를 killed.c로 저장하고 killed.out으로 컴파일 합니다. 소스를 killer.c로 저장하고 killer.out으로 컴파일 합니다.
]$ gcc killed.c -o killed.out
]$ ./killed.out
my pid=11349
badayak.com
badayak.com
badayak.com
badayak.com
badayak.com
badayak.com
죽었음
]$
]$ gcc killed.c -o killed.out








]$ ./killer.out 11349
]$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.