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手册
{
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手册