이 기사를 읽은 후:https://stackoverflow.com/questions/14189944/unix-system-file-tables, 나는 Linux가 파일을 관리하는 방법에 대해 기본적으로 이해하고 있습니다.
하지만 파일의 오프셋을 관리하는 방법을 모르겠습니다.
내가 이해한 바로는 열린 파일 테이블의 요소(행)는 자체 오프셋을 유지합니다. 예를 들어, 두 개의 프로세스 A와 B가 있고 동일한 파일을 읽고 있습니다. 그래서 나는 이 사건이 다음과 같아야 한다고 생각합니다.
Open File Table
____________ ______________
| processA | | offset: 12 | ------\
| fdA | ---------> |------------| \ INode Table
|----------| \______ ___________
/ | file |
____________ ______________ / |---------|
| processB | | offset: 15 | ------/
| fdB | ---------> |------------|
|----------|
따라서 프로세스 A에는 열린 파일 테이블에 자체 오프셋이 있고 프로세스 B에도 자체 오프셋이 있습니다. 위의 경우 프로세스 A는 오프셋 12에서 파일을 읽고 프로세스 B는 오프셋 15에서 파일을 읽고 있습니다.
내가 옳다면 지금은 혼란스러워요.
이제 이라는 파일을 여는 프로세스가 있으면 myfile
지속적으로 파일에 문자열을 씁니다. 어느 시점에서 나는 > myfile
파일을 비우는 명령을 실행합니다 . 내가 이해한 바에 따르면 프로세스에는 자체 오프셋이 있고 프로세스 > myfile
에는 또 다른 오프셋이 있습니다. > myfile
자체 오프셋만 변경되는데, 이제 쓰기 프로세스가 실행 후 파일 시작 부분에 문자열 쓰기를 시작하는 이유는 무엇입니까(오프셋은 이제 0임) > myfile
?
요약하면, 쓰기 프로세스는 실행 후 오프셋이 변경되어야 한다는 것을 어떻게 알 수 있습니까 > myfile
? 어떤 종류의 오프셋 동기화 메커니즘이 있습니까?