linux--目录chdir函数 linux chdir函数

int chdir(const char *path );

说明:chdir函数用于改变当前工作目录。调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限。每个进程都具有一个当前工作目录。在解析相对目录引用时,该目录是搜索路径的开始之处。如果调用进程更改了目录,则它只对该进程有效,而不能影响调用它的那个进程。在退出程序时,shell还会返回开始时的那个工作目录。

(1)内核解析参数中的路径名,并确保这个路径名有效。为了做到这一点,就路径名解析而言,内核使用相同的算法。如果路径名无效,它输出错误消息并退出。

(2)如果路径名有效,内核定位该目录的索引节点,并检查它的文件类型和权限位,确保目标文件是目录以及进程的所有者可以访问该目录(否则改变到新目录就没有用)。

(3) 内核用新目标目录的路径名和/或索引节点替换u区中当前目录路径名和/或它的索引节点号。

错误信息:

EFAULT: path 指向了非法地址

ENAMETOOLNG:路径过长

ENOENT:文件不存在

ENOMEM:内核内存不足

ENOTDIR:给出路径不是目录

EACCES:无访问路径中某个目录的权限

ELOOP:解析路径中太多的符号链接

EIO:发生I/O错误

实例1:

#include <unistd.h>

#include <iostream>

int main(void)

{

long cur_path_len;

char* cur_work_dir;

if((cur_path_len= pathconf(".",_PC_PATH_MAX)) == -1)

{

perror("Couldn`t get currentworking path length");

return 1;

}

std::cout<<"Current path lengthis"<<cur_path_len<<std::endl;

if((cur_work_dir= (char*)malloc(cur_path_len)) == NULL)

{

perror("Couldn't allocate memoryfor the pathname");

return 1;

}

if(getcwd(cur_work_dir,cur_path_len)==NULL)

{

perror("Couldn`t get currentworking directory!");

}

else

{

std::cout<< "Currentworking directoryis"<<cur_work_dir<<std::endl;

}

if(chdir("..") == -1)

{

perror("Couldn`t change current workingdiretory!");

return 1;

}

if((getcwd(cur_work_dir,cur_path_len)) == NULL)

{

perror("Couldn`t get currentworking directory!");

return 1;

}

std::cout<<"Afterchangedirectory,Currentworking directoryis"<<cur_work_dir<<std::endl;

free(cur_work_dir);

return 0;

}

linux--目录chdir函数 linux chdir函数

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/366674.html

更多阅读

文件操作CFile cfilefind 遍历文件夹

FC下的文件类文件操作的方法使用Visual C++编程,有如下方法进行文件操作:(1)使用标准C运行库函数,包括fopen、fclose、fseek等。(2)使用Win16下的文件和目录操作函数,如lopen、lclose、lseek等。不过,在Win32下,这些函数主要是为了和Win1

linux中钩子函数的理解 linux 钩子函数实例

看了一个回调函数,想再了解一下钩子函数,以下为在网络上查找的一些有用资料,记录一下:钩子函数(回调函数)也是系统内核为驱动程序提供的一些特定的函数,在驱动程序中某个变量的状态发生改变或将要改变或改变完成时,将会自动调用该回调函数,在

linux和window下mkdir函数问题 linux mkdir命令

通过WIN32宏进行判断window下mkdir函数#include<direct.h>int _mkdir( const char *dirname );linux下mkdir函数mode_t参数详解#include <sys/stat.h>int mkdir(const char *path, mode_t mode);参数:path是目录名mode是目录权限返回

linuxftw()函数使用方法实例 linux串口编程实例

表头文件:#include <ftw.h>定义函数:int ftw(const char *dir, int (*fn) (const *file, const structstat *sb, int flag), int depth)函数说明:ftw() 会从参数dir指定的 目录开始,往下一层层地递归式遍历子 目录。ftw()会传三个参数给

Linux下整型转换成字符串函数——itoa 长整型转换成字符串

题目:编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留2位小数,并对第三位进行四舍五入。转型不成功。。。。。用函数解决问题。。。。。。在Linux中的字符串函数库中提供了标准的atoi函数(将字符串转换成整型

声明:《linux--目录chdir函数 linux chdir函数》为网友我横刀向天笑分享!如侵犯到您的合法权益请联系我们删除