2017-04-14 5 views
1

시간 초과가있는 프로그램을 실행하고 싶습니다. 차단 해제와 SIGALRM과 SIGVTALRM을 제기, 차단 : 나는 시간 관련 신호를 사용하는이timeout 명령에서 사용하는 신호

timeout 5 path/to/program 

program처럼 timeout 명령을 사용하여 그 일을하고 있습니다. 나는 timeout가 어떻게 작동하는지 모르지만, 또한 시간 신호를 사용한다고 생각합니다. program의 신호가 timeout에 간섭하고 그 반대의 경우에 대해 걱정해야합니까?

+0

'timeout --version'의 결과는 무엇입니까? 최신 버전의 타임 아웃은 대상 프로그램을 별도의 프로세스에서 실행하고 해당 프로세스에서 타이머를 설정하지 않기 때문에 정상적으로 작동해야합니다. –

+0

'timeout (GNU coreutils) 8.25' 이것은 현대적으로 충분합니까? – Jona

+0

8.25 소스를 조사했는데 대상 프로그램에서 타이머를 설정하지 않았습니다. 리눅스에서 이것을 확인하는 또 다른 방법은'timeout 10 cat/proc/self/timers'를 실행하는 것입니다. –

답변

0

기본적으로 timeout은 으로 변경하지 않는 한 SIGTERM을 전송합니다. 따라서 다른 신호와 충돌하지 않아야합니다.

참고로 프로그램이 시간 초과로 종료 된 경우에는 124의 반환 값을 갖습니다. -k SECONDS을 사용하여 강제 종료 할 수 있습니다 (정상적으로 종료되지 않는 경우). 그러면 137의 반환 값이 반환됩니다.

+0

대답 주셔서 감사합니다,하지만 전적으로 내 질문에 대답하지 않습니다. 나는'timeout' 내부 논리가'ALRM' 신호를 사용하고 이것이 내 프로그램을 방해 할 수 있다고 생각합니다. ** 그 **에 대해 걱정해야합니까? – Jona