C/Trouble Shooting
[C] 에러 해결: User defined signal 1 error
2022. 5. 10. 22:52반응형
문제/에러
콘솔창에 아래와 같은 문장이 출력되고, 프로세스 종료
User defined signal 1
원인
SIGUSR계열 (SIGUSR1 등)의 시그널에 대한 처리가 없어서 발생하는 것이다.
즉, 시그널에 대한 처리, 핸들러가 없으면 디폴트로, 프로세스를 종료시킨다, 리눅스에서는.
해결방안
아래의 항목을 체크해보자
1) SIGUSR1에 대한 signal hadler를 설정했는 지 확인한다.
당연히, SIGUSR1에 대한 signal 처리하는 함수가 설정되지 않으면 위의 에러가 발생한다.
2) signal handler를 일찍 설정한다. (높은 확률로 이걸로 해결됨).
시그널을 핸들러를 설정하기 전에, 다른 프로세스로부터 시그널을 보내고 있진 않은가?
예를 들어, Process 1이 Process 2에게 SIGUSR1 시그널을 보내서, Process 2가 특정한 동작을 수행하고 싶다.
하지만, Process 2가 시그널을 등록하기 전에, 해당 시그널(SIGUSR1)을 받아버리면, 프로세스를 종료시킨다. (높은 확률로 이거임)
그래서, signal handler를 일찍 미리, 설정한다. (다른 프로세스가 시그널을 보내기 전에).
시간을 절약했다면 아래의 좋아요 부탁.
반응형