7
我有下面的代码只有它的一部分显示在这里我正在检查文件的类型。如何确定文件是否为链接?
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.
我测试我的程序与规则的文件类型和符号链接。在这两种情况下,输出都是“常规文件”,即符号链接案例失败,我不明白为什么?
这个问题有点不清楚。你在测试一个符号链接,并且该程序说它是一个常规文件吗?什么是buf.st_mode的价值? – 2010-10-21 06:52:06
@Gintautas:编辑。 – 2010-10-21 06:56:37
你需要'lstat()'。 'stat()'遵循符号链接并检查它们指向的文件。 – 2010-10-21 07:12:54