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 directory is"<<cur_work_dir<<std::endl;

}

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

{

perror("Couldn`t  change current working diretory!");

return 1;

}

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

{

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

return 1;

}

std::cout<<"Afterchangedirectory,Current working directory is"<<cur_work_dir<<std::endl;

free(cur_work_dir);

return 0;

}

linux --chdir() 改变当前工作目录函数相关推荐

  1. Python中的os.chdir()函数:改变当前工作目录

    Python中的os.chdir()函数:改变当前工作目录 Python的os模块提供了一系列处理操作系统相关功能的接口.在其中,os.chdir()函数被广泛应用于Python程序中,用于改变当前的 ...

  2. Python os.chdir() 方法用于改变当前工作目录到指定的路径。

    Python os.chdir() 方法 正在上传-重新上传取消​ Python OS 文件/目录方法 概述 os.chdir() 方法用于改变当前工作目录到指定的路径. 语法 chdir()方法语法 ...

  3. linux查看当前的工作目录,Linux-查看当前工作目录(pwd)

    Linux中pwd命令来查看"当前工作目录"的完整路径.简单的说,每当你在终端进行操作时,你都会有一个当前工作目录.在不太确定当前位置时,同样可以使用pwd来判定当前目录在文件系统 ...

  4. linux docker 指定容器工作目录

    启动容器时传入-w <work_dir>参数即可,如 docker run -it -w <work_dir> <container_image_name> < ...

  5. Linux:改变和显示目录或路径

    gdb提供了让用户指定.显示.修改源文件搜索路径或目录的命令,以便对程序进行调试. ( 1) directory 命令 该命令可以将给定目录dir添加到源文件搜索路径的开头,并且忽略先前保存的有关源文 ...

  6. linux中用户 机器名,Python 在linux下获得当前工作目录,主机名,用户名,操作系统平台等信息...

    尝试在python下写一个简单的shell,这个是参考实验楼上面的一个python教程.觉得这些api挺好玩的,写下来做一个笔记. #coding:utf-8 import os import soc ...

  7. 【C】linux下切换工作目录至程序所在目录

    1.获取当前程序的绝对路径 /proc/self/exe是一个符号链接,代表当前程序的绝对路径 用readlink读取/proc/self/exe可以获取当前程序的绝对路径 2.从字符串中获取目录 c ...

  8. 改变工作目录和根目录

    改变工作目录和根目录 进程有工作目录和根目录. 工作目录:进程在哪个路径下被运行起来哪个路径就是进程的工作目录(Current Woring Directory, CWD) 根目录:就是"/ ...

  9. c语言实现新建目录函数,C语言中改变目录的相关操作函数详解

    C语言fchdir()函数:改变当前工作目录头文件: #include 定义函数: int fchdir(int fd); 函数说明:fchdir()用来将当前的工作目录改变成以参数fd 所指的文件描 ...

最新文章

  1. 设置应用图标badge(徽章)
  2. Vlan 4096的限制原因
  3. @Autowired注入了dao,为什么还要写getDao(){return userDao}这个方法?有什么作用?
  4. 【开源】Winform甘特日程控件GanttPlanner V1.0发布
  5. opengl 教程(21) 聚光灯
  6. stm32f302 can通讯_福特福克斯发动机无法启动,诊断电脑还通讯不了怎么修?
  7. 超详细SQLMap使用攻略及技巧分享
  8. TensorFlow文件操作
  9. 入门机器学习,开启人工智能大门!
  10. c ++查找字符串_C ++数组| 查找输出程序| 套装5
  11. PO_本地一揽子采购协议(流程)
  12. Apache Kylin 与 ClickHouse 的对比
  13. 无问西东,哪怕重头来过
  14. TCP/IP网络知识点总结
  15. 农历大小月的确定方法
  16. 以下名字 不能作为c语言标识符的是,(完整版)《C语言程序设计》复习参考答案...
  17. 关于Provision.apk
  18. anki怎么设置学习计划_anki如何设置选项(学习任务)?
  19. pytorch——VGG网络搭建
  20. ROS2原始数据类型与接口

热门文章

  1. what is MacPorts?
  2. 有利可图网_公布有利可图的辅助项目手册
  3. TextBoxes与TextBoxes++算法详解
  4. 杰理AC1082/1074/1090开发开发记录
  5. 使用JDBC连接mysql遇到的若干问题及解决办法
  6. 超级好用的阿里巴巴字体图标库,附教程
  7. 词表大小越界错误 indexSelectLargeIndex
  8. 房价是鹤岗2倍多,这座小城有星巴克、沃尔玛和三甲医院
  9. JavaScript jQuery修改样式
  10. RFID与物联网的关系是什么?