Apakah Linux memiliki panggilan sistem untuk mengakses semua fitur sistem file yang didukungnya?

12

Linux mendukung banyak sistem file (misalnya: ext3, NTFS, FAT32, dll.).

Diagram berikut menunjukkan bagaimana Linux memungkinkan suatu proses untuk mengakses file:

masukkan deskripsi gambar di sini

Jadi asumsikan bahwa suatu proses yang disebut read()system call untuk membaca file, yang akan terjadi adalah bahwa layer VFS akan diakses, dan layer VFS akan memutuskan driver sistem file mana yang akan diakses berdasarkan pada sistem file dari partisi tempat file tersebut berada. dibaca berada di.

Linux menyediakan banyak sistem panggilan ke file akses (misalnya: read(), write(), rename(), dll).

Sekarang read()dan write()dan rename()bekerja pada semua sistem file yang mendukung Linux.

Tetapi ada fitur spesifik yang hanya ada pada beberapa sistem file sementara tidak ada pada yang lain. Misalnya: pada sistem file NTFS, Anda dapat mengatur bit Arsip untuk file, sementara ini tidak dapat dilakukan pada sistem file ext3.

Sekarang pertanyaan saya adalah, apakah Linux memiliki panggilan sistem untuk mengakses semua fitur sistem file yang didukungnya? misalnya: apakah Linux memiliki panggilan sistem untuk mengatur bit Arsip untuk file pada sistem file NTFS?

pengguna341642
sumber

Jawaban:

10

apakah Linux memiliki panggilan sistem untuk mengatur bit Arsip untuk file pada sistem file NTFS?

Untuk kasus khusus ini, ntfs-3gpengandar mengekspor atribut file melalui atribut yang diperluas , lihat Dapatkah saya mengatur bit "Arsip" pada file di NTFS di Linux?

Sistem file FAT (V) memiliki atribut file yang serupa, tetapi menggunakan ioctl()fungsi untuk mengaksesnya, lihat ioctl_fat(2). ( ioctl()adalah semacam panggilan sistem multiguna, digunakan untuk semua jenis hal khusus perangkat yang tidak menjamin panggilan sistem nyata.)

Sekarang pertanyaan saya adalah, apakah Linux memiliki panggilan sistem untuk mengakses semua fitur sistem file yang didukungnya?

Sulit untuk menjawab dengan pasti , tetapi setidaknya ada satu contoh yang berlawanan. ext4 secara internal mendukung cap waktu "waktu lahir" untuk file (seperti, waktu pembuatan nyata, tidak seperti ctimeperubahan pada modifikasi inode). Tetapi meskipun ext4 adalah sistem file "standar", untuk waktu yang lama, tidak ada panggilan sistem untuk mengakses waktu kelahiran.

Itu harus didukung sekarang, dengan statx()system call ditambahkan di Linux 4.11 , pada April 2017.

Terkait:

ilkkachu
sumber
3
ntfs! = gemuk. Setidaknya versi kernel ntfs TIDAK memiliki cara untuk mengatur atau mendapatkan flag arsip, meskipun header-nya mendefinisikannya. Hanya ntfs-3g berbasis sekering yang tampaknya mendukungnya (melalui atribut yang diperluas, bukan ioctls khusus).
Paman Billy
Ini tidak terkait langsung dengan pertanyaan, tetapi sebagai pelengkap atas penyebutan Anda statx, sekarang didukung di perpustakaan C dan dalam versi terbaru dari coreutils yang dirilis beberapa hari yang lalu.
Stephen Kitt
@UncleBilly, d'oh, tampaknya saya tidak bisa membaca, tetapi hanya secara otomatis memikirkan (v) lemak. Terima kasih telah memperhatikan itu, saya akan melihat apakah saya dapat menemukan referensi yang lebih tepat.
ilkkachu