我有以下代码这里只显示了其中一部分,我正在检查文件的类型。
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;
}
问题:当我使用printf("\nMode: %d\n",buf.st_mode);
时,获取st_mode
值为33188。
我用一个普通文件类型和一个符号链接测试了我的程序。在两种情况下输出结果都是"regular file",即符号链接的情况失败了,我不明白为什么?
lstat()
。stat()
会跟随符号链接并检查它们所指向的文件。 - Michael Foukarakis