반응형
신호 보내기
#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를 호출하기 전 기다리는 신호가 발생하면 프로그램은 결코 발생하지 않는 사건을 기다리게 되는 것이다.
반응형
'개발 > Linux' 카테고리의 다른 글
파이프 - 프로세스 파이프, popen/pclose (0) | 2014.11.28 |
---|---|
프로세스와 신호 - 안정적인 신호 인터페이스 (0) | 2014.11.07 |
프로세스와 신호 - 신호 (0) | 2014.11.07 |
프로세스와 신호 - 입출력 재지정 (0) | 2014.11.07 |
프로세스와 신호 - 좀비 프로세스 (0) | 2014.11.07 |