私はLinuxが今やrenameat
,fstatat
、openat
などの他の呼び出しを持っていることに気がつきました。ファイルディスクリプタに対する相対パスは、プロセスの現在の作業ディレクトリを基準にして相対的に解釈するのではなく、場合。Linuxはコール時に*をたくさん取得したようですね?これらの動機は何ですか?
なぜこれらの呼び出しが追加されましたか?ほとんどのシステムコールには、パス名の引数を持つバージョンのat
があるようです。そのためには、かなり魅力的なユースケースが必要です。しかし、私はそれが何であるか考えることはできません。
私たちが記憶を持っているのと同じくらい長い経路をサポートするというアイデアは、それを恣意的なものに関連付けることは悪い考えです。 – 0andriy
私は、現在のディレクトリ以外の何かに相対的なパスを参照すると便利だと思います。また、カーネルを助けることもできます。長いパスを何度も渡す代わりに、プロセスが相対的に短いパスを渡すことができます。カーネルには、パラメータとして渡されたfdのキャッシュされたデータがあります。 – linuxfan
私は、両方の理由よりも説得力があると思う。私は、名前が変更されても特定のディレクトリで予測可能に動作できるプロセスに関係している可能性があると考えています。 – Omnifarious