Linux C 判断文件类型

来源:互联网 发布:赤月传说2法宝升级数据 编辑:程序博客网 时间:2024/06/05 00:32

int main(int argc,char *argv[])

{

       int i;

       struct stat buf;

       char *ptr;

       if(lstat(argv[1],&buf)<0)

              { printf("error"); return 0; }


        if(S_ISREG(buf.st_mode)) ptr="普通文件";

        else if(S_ISDIR(buf.st_mode)) ptr="目录文件";

        else if(S_ISCHR(buf.st_mode)) ptr="字符特殊文件";

        else if(S_ISBLK(buf.st_mode)) ptr="块特殊文件";

        else if(S_ISFIFO(buf.st_mode)) ptr="管道或FIFO";

#ifdef S_ISLNK

        else if(S_ISLNK(buf.st_mode)) ptr="符号链接";

#endif

#ifdef S_ISSOCK

        else if(S_ISSOCK(buf.st_mode)) ptr="套接字";

#endif

        return 0;

}


int stat(const char *pathname,struct stat *buf);

stat函数返回一个与此命名文件有关到信息结构


int fstat(int fildes, struct stat *buf);

fstat()用来将参数fildes 所指的文件状态, 复制到参数buf 所指的结构中(struct stat). Fstat()与stat()作用完全相同, 不同处在于传入的参数为已打开的文件描述词。


int lstat(const char *pathname,struct stat *buf);

lstat函数类似于stat,但是当命名的文件是一个符号链接时,lstat返回该符号链接的有关信息,而不是由该符号连接引用的文件信息。