这是一个演示,但没有太多错误检查:
#include<stdio.h>
#include<unistd.h>
#include<sys/stat.h> /* For retrieving file stats */
#include<sys/types.h>
#include<stdlib.h>
int main()
{
struct stat info;
char *target;
char *const ptr=getenv("PWD");
printf("Current working directory : %s\n",ptr);
/* Now, checking to see if your current directory is a link */
if(lstat(ptr,&info)==0)
{
if(S_ISLNK(info.st_mode))
{
target=(char*)malloc((info.st_size+1)*sizeof(char));
readlink(ptr,target,info.st_size+1);
target[info.st_size]='\0';
printf("Current directory is a link\n");
printf("Target directory : %s\n",target);
free(target);
}
else
{
printf("Current directory is not a link\n");
}
}
else
{
printf("Sorry! Cannot stat the file\n");
exit(-1);
}
return 0;
}