Linux에서 정지 인식 프로그램 작성

Linux에서 정지 인식 프로그램 작성

jackd 및 해당 클라이언트와 같이 물리적 시간에 의존하는 프로그램은 Linux의 랩톱에서 소프트웨어가 멈추는 경우 제대로 작동하지 않습니다. 소프트웨어가 일시 중지되기 전에 연결을 끊고 다시 시작할 때 다시 연결함으로써 많은 "타이밍 오류"가 발생하기 시작하는 클라이언트를 수정하고 싶습니다. 시스템 구성 없이 클라이언트에서 이 작업을 수행할 수 있습니까? 시스템 스크립트를 편집하여 프로그램을 종료할 수 있다는 것을 알고 있지만, 루트 권한 없이 보류 중인 이벤트를 직접 기다릴 수 있는 인터페이스가 Linux에 있습니까? 물리적 시간에 의존하지만 정지를 올바르게 처리하는 프로그램을 알고 있습니까?

답변1

프로그램이 물리적 시간에 의존하는 경우 어쨌든 주기적으로 시계를 확인해야 합니다. 실시간을 보장하는 커널 패치가 포함된 Linux 버전에서 실행되는 실시간 프로그램이 아닌 이상 스케줄러는 일정 시간 동안 프로세스 실행을 지연시킬 수 있습니다. 프로세스는 STOP 신호에 의해 중지될 수도 있습니다(다시 시작하기 위해 전송된 CONT 신호에 핸들러를 배치하여 이를 알 수 있음).

소프트웨어가 오랜 시간이 지났다는 사실만 알아야 하는 경우 타이머를 설정하여 소프트웨어를 깨울 수 있습니다. 그러나 귀하가 제시한 예에서는 그 이상의 이해가 필요합니다. 예를 들어 네트워크 구성 변경 사항을 이해해야 합니다. 이와 같은 프로그램의 경우 시스템 일시 중지/재개 이벤트에 연결하면 단순히 시간 점프를 감지하는 것보다 더 많은 정보를 얻을 수 있습니다.

시스템 일시 중지/재개 이벤트에 연결하려면 루트 권한이 필요하거나 D-Bus 액세스 권한이 있는 세션에서 실행해야 합니다. (어떤 D-Bus 활동을 구독해야 할지 잘 모르겠습니다.)

시스템 일시 중지/재개 이벤트에 연결하면 재개 시뿐만 아니라 일시 중지 시에도 코드를 실행할 수 있다는 이점이 있습니다.

관련 정보