나는 주어진 프로세스가 충돌했다는 것을 "인식"할 필요가있는 커널 모듈을 만들고있다.사용자 프로세스가 신호를 종료/수신 할 때 커널 모듈을 인터럽트합니까?
지금 당장 내 방식은 커널 모듈에 주기적 타이머 인터럽트를 설정하는 것입니다. 모든 타이머 인터럽트마다 task_struct.state 및 task_struct.exitstate 값을 확인합니다.
커널 모듈에서 프로세스가 종료 될 때 또는 프로세스가 주어진 신호 (예 : SIGINT 또는 SIGHUP)를 수신 할 때 인터럽트를 설정하는 방법이 있는지 궁금합니다.
감사합니다.
편집 : 사용자 응용 프로그램을 수정할 수 없다는 점을 알아 두십시오. 아니면 다른 공급 업체의 소프트웨어에 대한 추가 요구 사항/제약 조건을 추가하면 고객에게 훨씬 더 어려운 판매가 될 것입니다 ...
감사! 여기 내가 언급 했어야 할 잡을 것이있다 : 나는 사용자 응용 프로그램을 수정할 수 없다. 아니면 다른 공급 업체의 소프트웨어에 대한 추가 요구 사항/제약 조건을 추가하면 고객에게 훨씬 더 어려운 판매가 될 것입니다 ... 아마 패치 방법은 살펴볼 항목이지만, off는 주기적 타이머 인터럽트로 인한 성능 저하가 허용 임계 값을 초과하는 경우에만 가치가 있습니다 ... –
응용 프로그램을 시작하고 모듈에 신호를 보내는 래퍼가 있습니까? 프로세스 (즉, 래퍼)의 부모는 자식 (애플리케이션 프로세스)이'waitpid() '등을 통해 충돌하거나 종료하면 알림을받습니다. 래퍼가 드라이버의 장치 노드를 연 다음 장치 노드를 닫지 않고 앱을 exec() 할 수도 있습니다. 자식은 열린 파일 디스크립터를 상속 받아 닫거나 종료 될 때까지 열린 상태로 유지합니다. 래퍼는 앱을 시작한 후에 존재할 필요는 없습니다. – TrentP