「O_PATH」を何に使用するのですか?
Linux 4.xベースのディストリビューションを使用していますが、最近、カーネルのopen()システムコールがO_PATHオープンフラグをサポートしていることに気付きました。 そのmanページには理論的に使用できるシステムコールのリストがありますが、その考え方がよくわかりません。Iやるopen(O_PATH)だけのディレクトリ、ファイルではなく?そして、もしそうなら、なぜディレクトリのパスの代わりにファイル記述子を使用したいのですか?また、リストされているシステムコールのほとんどは、ディレクトリに固有のものではないようです。では、通常のファイルを開いてO_PATH、どういうわけかそれらのディレクトリをファイル記述子として取得しますか?または、それらのファイル記述子を取得するには機能が制限されていますか? 誰かが何O_PATHをどのように、そして何のために、私たちがそれを使うことになっているのかについて、説得力のある説明を与えることができますか? ノート: 必要な場合を除いて、これがどのように進化したかについての歴史を説明する必要はありません(関連するmanページではLinux 2.6.x、3.5、3.6での変更点について言及しています)。 libcやその他の高レベルの機能を使用するように言わないでください。