2013-11-25 4 views
1

나는 다음과 같은 의심을 품습니다. 파일을 열고 파일에 액세스하는 것의 차이점은 무엇입니까?파일 액세스와 파일 열기의 차이점

저는 fanotify와 협력 중이며 FAN_ACCESS 이벤트에만 관심이 있습니다. 내 프로그램을 시작하고 일부 파일을 편집하려고하면 프로그램이해야 할 일을합니다.

filesystem::ofstream acces_to_file; 
acces_to_file.open('/tmp/test_file.txt'); 
acces_to_file << "Some text" << endl; 
acces_to_file.close(); 

을하지만 놀랍게도,이 액세스 내 프로그램에 의해 감지 된 것입니다 :

내가 몇 가지 테스트를 썼다 있고, 테스트 케이스 중 일부는 다음과 같은 코드를 사용했다. 나는 nano에서 같은 파일에 접근한다. (그렇게 언급 된 프로그램을 다시 시작하지 않아도) 모든 것이 다시 작동한다.

왜 나는 그것이 액세스와 파일을 열 때 어떤 차이가 있어야한다고 생각합니다.

프로그램은 항상 루트 사용자에 의해 실행됩니다.

나는 다음과 같은 플래그를 설정합니다

fanotify_mark(fd, FAN_MARK_ADD, FAN_ACCESS | FAN_EVENT_ON_CHILD, AT_FDCWD, MONITOR_ROOT_PATH); 

답변

1

일반적으로 파일을 열면 파일을 사용하고자하는 OS가 알려줍니다.

일반적으로 파일 액세스는 파일 읽기 전용, 쓰기 전용, & 쓰기와 같습니다. 일부 액세스 권한에는 순차 또는 무작위도 포함됩니다.

+0

그래서 파일에 쓸 때 이미 열려있는 파일에 액세스하고 있습니까? 그게 무슨 뜻이야? 물론 그것이 당신이 의미하는 바입니다. 나는 무엇을 생각하고 있습니까? ; p –

+0

그리고 [this] (http://www.xypron.de/projects/fanotify-manpages/man2/fanotify_mark.2.html)는 'FAN_ACCESS'는 파일을 읽었다는 것을 의미합니다 (예를 들어, 해야 할 것) – nos

-1

당신이 묻는 정확히 무엇? 쓰기를 원하는 텍스트 파일에 액세스 할 수 있는지 묻는 경우 텍스트 파일을 어디에 저장합니까? 읽기 전용 위치에 텍스트 파일을 저장하면 텍스트 파일에 쓰는 데 실패합니다. 파일을 열어 닫을 수는 있지만 쓰기는 수행되지 않습니다. 예를 들어, 텍스트 파일이 PC의 프로그램 파일에있는 경우, 거기에 저장된 항목에 대한 읽기 액세스 권한 만 있습니다. 파일에 대한 읽기/쓰기 액세스를 원한다면 C : \ Users \ Default \ AppData에 저장하십시오.

+0

정말요? 왜 내 게시물에 부정적인 점수를 매기고 있습니까? 나는 도움이되기 위해 노력하고있다. –