怎样检查对应的路径是一个链接目录

来源:互联网 发布:unity3d接入ios内购 编辑:程序博客网 时间:2024/04/27 22:33
int check_linkdir( char *pathname )
{
        int res = 0;
        struct stat lstatbuf;
        struct stat statbuf;

        res = stat( pathname, &statbuf );
        if (res != 0)
        {
                perror("stat");
                return 0 ;
        }

        res = lstat( pathname, &lstatbuf );
        if (res != 0)
        {
                perror("lstat");
                return 0 ;
        }

        if ( (lstatbuf.st_mode & S_IFMT) == S_IFLNK)
        {
                if ((statbuf.st_mode & S_IFMT) == S_IFDIR)
                {
                        printf("this is a link dir /n");
                        return 1 ;
                }
        }
        else
                return 0 ;
}

这个用到二个函数,stat和lstat,它们对应的原型是:
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);

These  functions  return  information  about a file.  No permissions are required on the file itself, but -- in the
case of stat() and lstat() -- execute (search) permission is required on all of the directories in path  that  lead to the file.

stat() stats the file pointed to by path and fills in buf.

lstat()  is  identical  to stat(), except that if path is a symbolic link, then the link itself is stat-ed, not the
file that it refers to.


详细资料查看man手册


原创粉丝点击