// linux에서는 프로세스에게 시그널을 보낼 수가 있다
// 
// SIGNAL : SIGINT, SIGQUIT, SIGTERM, ...
// 			SIGINT : ctrl+c로 끝났을때 전달되며
// 			SIGQUIT : Quit를 했을때 전달된다
// 			SIGTERM : 강제종료
// 
// 예제

void func(int sig)
{
	cout<<"func"<<endl;
}

void main(void) 
{
	signal(SIGINT, func);
	while(1)
	{
		sleep(1)
	}
	return;
}

// 위 프로그램에서 사용자가 ctrl +c를 누르거나
// kill -2 process id를 호출하면
// func 함수가 호출

// signal block 방법
// SIGQUIT 무시 방법

	//for SIGQUIT UNBLOCK
    sigset_t    sigset;
    sigset_t    sigset_old;

    sigemptyset(&sigset);
    sigaddset(&sigset, SIGQUIT);
    sigprocmask(SIG_BLOCK, &sigset, &sigset_old);

// child process가 죽을때 parent process에게 SIGCHILD를 날리게 된다
// 
// 이때 signal(SIGCHILD, SIGIGN)를 하게되면 이 시그널도 무시하게 된다.







'C언어' 카테고리의 다른 글

c++ 공부 요점 정리 8  (0) 2013.11.20
c++ 공부 요점 정리 7  (0) 2013.11.20
리눅스(우분투 10.10) 공유 메모리 예제 2 공유메모리 제거  (0) 2013.11.18
c++ 공부 요점 정리 6  (0) 2013.11.16
c++ 공부 요점정리 5  (0) 2013.11.15
Posted by 뮹실이

최근에 달린 댓글

07-02 05:08
Yesterday
Today
Total