open()
を呼び出すと、pathname
とオプションのflags
を指定してファイル記述子が返されることはよく知られています。 man page for open()
でPOSIXのファイルのみを開く
int fd;
if ((fd = open(pathname, O_RDONLY)) == -1) {
printf("Could not open file\n");
return;
}
、フラグO_DIRECTORY
がどこに定義されています。
パス名がディレクトリでない場合は、オープンが失敗する原因。この フラグは、FIFOまたはテープの デバイスでopendir(3)が呼び出された場合に、サービスの拒否を避けるため、カーネルバージョン2.1.126で追加されました。
しかし、私はopen()
は、ディレクトリではなく、ファイルに失敗する原因と思われる、O_FILE
のようなものを見つけるように見えることができませんでした。
stat()
を呼び出すのではなく、open()
に渡すか、pathname
がファイルであるかどうかを判断する別の方法がありますか?