시그널(Ctrl+C, Ctrl+Z, Ctrl+\ 등등)이 발생시 이를 처리하는 프로그램입니다~
시스템프로그래밍을 배울때 기초로 많이 작성하는 프로그램이죠 ㅋ
컨트롤+Z를 누르면 시그널이 메세지를 표시하고 반영되지 않도록 하는 프로그램이에요~
코드는 맨 아랫줄에 받을 수 있는 링크가 있어요 ㅋ
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
void catchsigint (int signo) {
char handmsg[] = "I found SIGINT \n ";
if(signo == 20)
strcpy(handmsg, "I found SIGTSTP\n");
else if(signo == 3)
strcpy(handmsg, "I found SIGQUIT\n");
int msglen = strlen(handmsg);
write(STDERR_FILENO, handmsg, msglen);
}
int main(void)
{
struct sigaction act;
act.sa_handler = catchsigint;
act.sa_flags = 0;
if((sigemptyset(&act.sa_mask) == -1 ) || (sigaction(SIGQUIT, &act, NULL) == -1))
perror("Failed to set SIGQUIT to handle Ctrl-Bslash ");
else if((sigemptyset(&act.sa_mask) == -1) || (sigaction(CTRL_Z, &act, NULL) == -1))
perror("Failed to set SIGTSTP to handle Ctrl-Z ");
for(;;);
return 0;
}
'서버 > Linux' 카테고리의 다른 글
LINUX에서 iso이미지 마운트하는 방법 (0) | 2012.11.19 |
---|---|
RHCSA에서 학습해야할 내용 (0) | 2012.11.05 |
리눅스에서의 타이머 - signal로 이용하기 (0) | 2007.11.15 |