2011-04-12 2 views
1

c 또는 C++를 사용하여 파일이 열려 있고 파일 조작이 Linux의 다른 프로세스에서 감지되면 어떻게 감지합니까? 나는 lsof가 열려있는 모든 파일을 나열하지만 그 정보를 얻는 방법을 모른다.파일 조작이 현재 Linux의 파일에서 수행되고 있는지 감지하는 방법

들으

+0

내게 떠오르는 질문 중 하나는이 정보가 필요한 이유입니다. 성취하고자하는 것에 따라 복잡한 시스템 콜을 실제로 처리하지 않고도 동일한 행동을 취할 수있는 많은 다른 방법이 있습니다. – LiKao

답변

3

나는 lsof 실제로 이런 식으로 작동하는지 모르겠어요,하지만 방법은이 될 수 구현 :

  • /proc/$PID/fd/ 파일 looknig하여 프로세스의 열려있는 파일을 얻을.

  • 다른 파일 '/proc/$PID/fd/'을보고 누가 동일한 파일을 읽고 있는지 확인하십시오.

2

lsof 소스 코드를 살펴 보시지 않겠습니까? 아마도 다소 위협적 일지 모르지만, 모든 관련 정보를 제공하는 두세 개의 재미있는 시스템 콜을 분리 할 수있을 것입니다. 당신이 lsof 명령의 strace 할 경우 모든 /proc/*/fd/*이 이상

1

lsof 반복을 볼 수 있습니다.

관련 문제