私は以下のコードを持っていますが、その一部のみがここに表示されており、ファイルのタイプかどうかを確認しています。
struct stat *buf /* just to show the type buf is*/
switch (buf.st_mode & S_IFMT) {
case S_IFBLK: printf(" block device\n"); break;
case S_IFCHR: printf(" character device\n"); break;
case S_IFDIR: printf(" directory\n"); break;
case S_IFIFO: printf(" FIFO/pipe\n"); break;
case S_IFLNK: printf(" symlink\n"); break;
case S_IFREG: printf(" regular file\n"); break;
case S_IFSOCK: printf(" socket\n"); break;
default: printf(" unknown?\n"); break;
}
問題:結果st_mode
を実行したときに得られる値printf("\nMode: %d\n",buf.st_mode);
は 33188 です。
通常のファイル タイプとシンボリック リンクを使用してプログラムをテストしました。どちらの場合も、出力は「通常のファイル」でした。つまり、シンボリック リンクのケースが失敗しており、その理由がわかりません。