[완료]시그널 관련 질문입니다..

wjddncjf의 이미지

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
 
void ouch(int sig)
{
	printf("\nOUCH! - I got signal %d\n", sig);
}
 
int main()
{
	struct sigaction act;
	act.sa_handler = ouch;
	sigemptyset(&act.sa_mask);
	act.sa_flags = 0;
	sigaction(SIGINT, &act, 0);
	while(1)
	{
		printf("Hello World!\n");
		sleep(1);
	}
}

---------------------------------------

다음과 같은 예제를 실행해 보았습니다.
컨트롤+C를 막고 끌 때는 컨트롤+\ 등으로 강제종료를 시키는 소스입니다.

제가 이것저것 해보다가
컨트롤+Z 로 멈추고 Kill -18 로 프로세스 재개를 시켰습니다.
그 이후로 컨트롤+Z 나 컨트롤+\ 가 안먹히네요
다른 시그널들도 안먹히는 것 같구요...

SIGCONT을 하면 등록되있는 시그널이 변경되거나 하는건가요?
그게 아니라면 이유가 뭘까요..?

pastime의 이미지

STOP 시그널을 받고 background로 넘어가서
더 이상 시그널이 전달되지 않기 때문에 그럴 것입니다.

fg 명령으로 foreground process로 만들어주거나
job 번호나 pid 등으로 직접 시그널을 전달하면 반응할 것입니다.

wjddncjf의 이미지

그렇게 되는 거였군요
답변 감사합니다...