nohup이 정의되지 않았나요?

nohup이 정의되지 않았나요?

무한 루프로 프로그램 실행 을 사용하면 nohup프로그램이 무한정 실행됩니까(머신이 재설정되거나 수동으로 종료될 때까지)?

답변1

Nohup은 애플리케이션에 의해 무시될 수 있는 HANGUP 신호의 기본 동작을 설정합니다. 권한이 있는 다른 프로세스(루트 또는 동일한 사용자)의 다른 신호 또는 잘못된 동작(세그먼트 오류, 버스 오류)으로 인해 프로그램이 종료될 수도 있습니다. 자원 제한(ulimit)은 프로그램을 종료할 수도 있습니다.

이 외에는 무한 루프가 오랫동안 실행될 가능성이 높습니다.

답변2

다음은 nohup에서 중요한 두 줄입니다.소스 코드.

(void)signal(SIGHUP, SIG_IGN); // SIGHUP 무시

execvp(*argv, argv); // 명령을 실행합니다.

따라서 애플리케이션이 다음과 같은 것을 호출할 때까지

signal (SIGHUP, SIG_DFL); //또는 일부 사용자 정의 신호 처리기

일반적인 상황에서는 시스템을 재부팅하거나 직접 종료할 때까지 계속 실행됩니다.
이 경우에도 종료될 수 있습니다.Kmash가 지적했다..

관련 정보