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がサポートするファイルシステムのすべての機能にアクセスするためのシステムコールがありますか?
答えにくい〜しなければならないしかし、その逆の例が1つ以上あります。 ext4は内部的にファイルの「生成時間」タイムスタンプをサポートします(つまり、ctime
inodeが変更されたときの変更とは反対の実際の生成時間)。しかし、ext4が「標準」ファイルシステムであるにもかかわらず、長い間生成時間にアクセスするシステムコールはありませんでした。
今はサポートする必要があります。statx()
システムコールに追加するLinux 4.11、2017年4月。
関連:
- ext4の生成が空です。
- lwn.netにはstatxに関する多くの記事があります。statx() v3