register_chardev()를 수행하는 장치 드라이버 모듈이 있습니다. 드라이버 open() 함수에서 장치 노드를 열려고 시도하는 프로세스의 pid 또는 pgid를 결정할 수 있기를 원합니다. 이것이 가능한가? 누군가는 어디에서 시작해야하는지에 대한 아이디어가 있습니까?특정 프로세스 그룹에만 액세스 할 수있는 Linux 장치 노드
동일한 세션에 있지 않으면 프로세스를 새 프로세스 그룹으로 마이그레이션 할 수 없으므로 내 응용 프로그램 노드 만 사용하도록 장치 노드를 보호해야한다고 가정합니다.
감사합니다. 드라이버의 열린 함수가 실행되는 동안 스케줄러가 프로세스 대기열의 새 프로세스로 현재를 업데이트하지 않을 것입니다. 루트 사용자가 어쨌든 수정 된 드라이버 모듈을로드하여이를 우회 할 수 있다고 가정합니다. 하지만 장치 노드 파일에 대한 사용 권한과 소유권과 함께 사용하겠습니다. –
open 함수는 syscall을 만든 프로세스의 컨텍스트에서 실행됩니다 - 선점 될 수 있지만 open 함수의 모든 코드가 실행될 때 'current'는 동일한 프로세스를 가리 킵니다. – caf