APUE编程:47---文件目录(路径的查看、更改:chdir、fchdir、getcwd)
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、路径的更改
#include <unistd.h>
int chdir(const char *path);
int fchdir(int fd);
//返回值:成功返回0;出错返回-1
- 两个函数分别用path或打开文件描述符来指定当前的工作目录
- 此函数只改变程序运行时执行的路径,并不改变其他进程
- chdir会跟随符号链接
演示案例
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
if(chdir("/tmp")==-1){
perror("chdir");
exit(1);
}
printf("chdir to /tmp success\n");
exit(0);
}

二、路径的获取

#include <unistd.h>
char *getcwd(char *buf, size_t size);
//返回值:成功返回buf;失败返回NULL
- buf必须有足够的空间容纳绝对路径名再加上一个终止NULL字符,否则返回错误
- getcwd不会跟随符号链接
演示案例
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
int main()
{
char buff[MAXSIZE];
ssize_t len;
if(getcwd(buff,sizeof(buff))==NULL){
perror("getcwd");
exit(1);
}
printf("current pathname:%s\n",buff);
if(chdir("/tmp")==-1){
perror("chdir");
exit(1);
}
printf("chdir /tmp success\n");
if(getcwd(buff,sizeof(buff))==NULL){
perror("getcwd");
exit(1);
}
printf("current pathname:%s\n",buff);
exit(0);
}

三、符号链接的问题
- 我们书写下面的程序,验证chdir会跟随符号链接,而gecwd不会
