Linux에는 지원하는 파일 시스템의 모든 기능에 액세스하기 위한 시스템 호출이 있습니까?

Linux에는 지원하는 파일 시스템의 모든 기능에 액세스하기 위한 시스템 호출이 있습니까?

Linux는 여러 파일 시스템(예: ext3, NTFS, FAT32 등)을 지원합니다.

다음 다이어그램은 Linux에서 프로세스가 파일에 액세스하도록 허용하는 방법을 보여줍니다.

여기에 이미지 설명을 입력하세요.

따라서 프로세스가 read()파일을 읽기 위해 시스템 호출을 호출한다고 가정하면 VFS 계층에 액세스하고 VFS 계층은 파일이 있는 파티션의 파일 시스템을 기반으로 액세스할 파일 시스템 드라이버를 결정합니다.

Linux는 파일에 액세스하기 위한 많은 시스템 호출을 제공합니다(예: , read()등 ).write()rename()

이제 read()Linux가 지원하는 모든 파일 시스템에서 작동합니다 write().rename()

그러나 일부 파일 시스템에만 존재하고 다른 파일 시스템에는 존재하지 않는 특정 기능이 있습니다. 예: NTFS 파일 시스템에서는 다음을 설정할 수 있습니다.파일ext3 파일 시스템에서는 수행할 수 없는 파일 비트입니다.

이제 제 질문은 Linux가 지원하는 파일 시스템의 모든 기능에 액세스하기 위한 시스템 호출이 있습니까?입니다. 예: Linux에는 설정을 위한 시스템 호출이 있습니까?파일NTFS 파일 시스템의 파일 비트?

답변1

Linux에는 NTFS 파일 시스템에서 파일의 보관 비트를 설정하는 시스템 호출이 있습니까?

이 특별한 경우에 ntfs-3g드라이버는 다음과 같이 파일 속성을 내보냅니다.확장된 속성, 바라보다Linux의 NTFS에서 파일의 "보관" 비트를 설정할 수 있나요?

(V)FAT 파일 시스템은 유사한 파일 속성을 가지고 있지만 ioctl()해당 속성에 액세스하기 위해 함수를 사용합니다.ioctl_fat(2). ( ioctl()실제 시스템 호출을 보장하지 않는 다양한 장치 관련 항목에 사용되는 범용 시스템 호출입니다.)

이제 제 질문은 Linux가 지원하는 파일 시스템의 모든 기능에 액세스하기 위한 시스템 호출이 있습니까?입니다.

대답하기 어렵다~ 해야 하다, 그러나 그 반대의 예가 하나 이상 있습니다. ext4는 내부적으로 파일의 "생성 시간" 타임스탬프를 지원합니다(즉, ctimeinode가 수정될 때의 변경 사항과 반대되는 실제 생성 시간 ). 그러나 ext4가 "표준" 파일 시스템임에도 불구하고 오랫동안 생성 시간에 액세스하는 시스템 호출이 없었습니다.

이제는 지원해야 합니다.statx()시스템 호출에 추가하다리눅스 4.11, 2017년 4월.

관련된:

관련 정보