sigsuspend함수 이전에 pause함수 프로세스를 일시 중단시키는 함수부터 아라보자. sigsuspend Interface int sigsuspend(sigset_t *sigmask) Parameter sigmask: process를 중단시킴과 동시에 블록(무시할) signal set Function 호출한 프로세스를 중단시킴과 동시에 시그널 셋을 블록시킴. Return Always -1 errno 설정 sigfillset(&sigmost); // 모든 시그널을 sigmost에 포함! sigdelset(&sigmost, signum); // 모든 시그널 중 signum만 제외시킴 sigsuspsend(&sigmost); // signum을 제외한 모든 시그널을 Block시킴과 동시에 프로세스 중단 ..
SIGNAL
모든 시그널은 SIG_ 로시작하는 Symbolic name을 가진다. 각각의 Signal에 대한 기본동작은 이미 OS단에서 정의되어있다. 더 자세히 설명하면? 시그널은 프로세스의 PCB 블록에 담겨있는 SIGNAL 관련 자료구조에 기본적인 액션이 명세되어있고, 이 기본 액션에 따라서 시그널이 도착하는 시점에 프로세스가 동작한다, 물론 sigaction 같은 함수를 통해 동작의 재정의가 가능하다. POSIX에서 지정한 시그널 번호와 이름은 다음과 같다. Signal symbolic name Signal Number default action Signal 0: question process alive? 0 SIGHUP 1 SIGINT 2 프로세스에 인터럽트를 발생시켜 죽임 ( Ctrl+C ) SIGQUIT ..
Siganl 시그널이란? Kernel or Process 에서 다른 process에게 어떤 사건이 발생했음을 알려주는 소프트웨어적인 통지(이벤트) Signal lifetime: 시그널 생성 시점부터 process에게 전달되는 시점까지 [Signal Handler] When process catch the signal , do specific action [Signal Pending] Signal that has been generated, but not yet delivered is said to be pending [Singal mask] 시그널을 블록시키는것, 시그널 마스크는 블록된 시그널의 리스트를 가진다. SIGNAL을 받은 시점에서 해당 프로세스의 ACTION Signal IGNORE SIgna..