본문 바로가기

개발/Linux

프로세스와 신호 - 신호 보내기

반응형

신호 보내기 

#include <sys/types.h>

#include <signal.h>


int kill(pid_t pid, int sig);


- sig로 지정된 신호를 pid로 지정된 프로세스에게 보낸다. 

- 성공시에는 0을 리턴하고, 실패 하면 -1을 리턴한다.

- 실패의 경우에서 신호가 유효하지 않으면 errno 에는 EINVAL이, 권한이 없으면 EPERM, 대상 프로세스가 존재하지 않으면 ESRCH 가 설정된다.

예제 소스

실행 결과

- kill(getppid(), sigalrm) 자식이 여기서 부모 pid를 얻어서 신호를 보낸다 그리고 끝

- 부모는 (void) signal(~~ 여기서 받아서 ding 를 호출

- 그래서 아래 Ding가 출력되고 done가 출력된 후 종료


- 느린 시스템 호출이 발생하는 도중 다른 신호가 발생하면 오류를 돌려준다. 빠르면 문제 없지만.

- "경쟁조건" 이 발생할 수 있다. pause를 이용해 신호를 기다리는데 pause를 호출하기 전 기다리는 신호가 발생하면 프로그램은 결코 발생하지 않는 사건을 기다리게 되는 것이다. 


반응형