# include <signal.h>

 
  • signal
    • void (*signal(int signum, void (*handler)(int)))(int); (RETURN) void *()(int) 이전에 설정된 시그널 핸들러
      예제
      #include <signal.h> #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> void signalhandler(int sig) { if (sig == SIGINT) { printf("\nthis program will stop in 3 seconds..\n"); sleep(3); exit(0); } if (sig == SIGQUIT) printf("\nsignal SIGQUIT\n"); } int main() { signal(SIGINT, signalhandler); signal(SIGQUIT, signalhandler); printf("input Ctrl+C or Ctrl+\\ \n"); while(1); }
  • sigaction
    • int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) 시그널보다 향상된 기능을 제공하는 시그널 처리를 결정해준다. 인수 : int signum 시그널 번호 struct sigaction *act 설정할 행동. 즉, 새롭게 지정할 처리 행동 struct sigaction *oldact 이전 행동, 이 함수를 호출하기 전에 지정된 행동 정보가 입력됩니다. struct sigaction { void (*sa_handler)(int); // 시그널을 처리하기 위한 핸들러. // SIG_DFL, SIG_IGN 또는 핸들러 함수 void (*sa_sigaction)(int, siginfo_t *, void *); // 밑의 sa_flags가 SA_SIGINFO일때 // sa_handler 대신에 동작하는 핸들러 sigset_t sa_mask; // 시그널을 처리하는 동안 블록화할 시그널 집합의 마스크 int sa_flags; // 아래 설명을 참고하세요. void (*sa_restorer)(void); // 사용해서는 안됩니다. }
  • sigemptyset
    • int sigemptyset(sigset_t *set); 시그널 집합 변수의 내용을 모두 제거
  • sigaddset
    • int sigaddset(sigset_t *set, int signum); 시그널 집합에 변수의 내용 추가
  • kill
    • int kill(pid_t pid, int sig); pid 의미 양수 : 지정한 프로세스 ID에만 시그널을 전송 0 : 함수를 호출하는 프로세스와 같은 그룹에 있는 모든 프로세스에 시그널을 전송 -1 : 함수를 호출하는 프로세스가 전송할 수 있는 권한을 가진 모든 프로세스에 시그널을 전송 -1 : 이외의 음수 첫 번째 인수 pid 의 절대값 프로세스 그룹에 속하는 모든 프로세스에 시그널을 전송