linux --chdir() 改变当前工作目录函数

原创 2012年05月14日 11:39:03

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函数

LINUX文件与目录笔记----chdir函数   2011-08-15 14:47:49|  分类: linux |  标签:linux  笔记  |举报|字号 订阅 ...

C for linux 更改当前工作目录函数 chdir 或 fchdir

头文件:#include 用法格式:int chdir ( const char *path );                  int fchdir ( int fd );chdir用来将当前工...

linux之chdir函数解析

[lingyun@localhost chdir]$ ls chdir.c [lingyun@localhost chdir]$ cat chdir.c  /*********************...
  • sonbai
  • sonbai
  • 2013年08月06日 15:43
  • 4289

linux内核之chdir分析

今天我们看一些在linux系统里边经常使用的cd命令对应的内核实现,就是sys_chdir函数的实现。 sys_chdir函数在fs/open.c里,定义如下 asmlinkage long sy...

chdir()改变当前工作目录 -- Linux

int chdir(const char *path ); 说明:chdir函数用于改变当前工作目录。调用参数是指向目录的指针,调用进程需要有搜索整个目录的权限 错误信息: EFAU...

8Linux服务器编程之:chdir()函数和cd命令,getcwd()函数和pwd

 1chdir依赖的头文件 #include 2函数定义 int chdir(const char *path); int fchdir(int fd); 函数...

C语言chdir()函数:改变当前的工作目录

相关函数:getcwd, chroot 头文件:#include 定义函数:int chdir(const char * path); 函数说明:chdir()用来将当前的工作目录改变成以参数...

chdir、fchdir 和 getcwd 函数

一、    每个进程都有一个当前工作目录,此目录是搜索所有相对路径名的起点(不以斜杠开始的路径名为相对路径名)。当用户登录到 *NIX 系统时,其当前工作目录通常是口令文件(/etc/pas...
  • SF_min
  • SF_min
  • 2011年05月20日 11:34
  • 5827

Linux cd --更改当前工作目录

Linux cd 命令可以说是Linux中最基本的命令语句,其他的命令语句要进行操作,都是建立在使用 cd 命令上的。 所以,学习Linux 常用命令,首先就要学好 cd 命令的使用方法技巧。  ...

linux shell 改变当前工作目录

#!/bin/bash dir=~/proj/android-2.3.4 #name:go.sh cd $dir 在终端上执行./go.sh,但是当前工作目录依旧保持不变,原因就是执行脚本时候,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux --chdir() 改变当前工作目录函数
举报原因:
原因补充:

(最多只允许输入30个字)