C语言中获取和改变目录的相关函数总结_C 语言

C语言getcwd()函数:取得当前的工作目录
头文件:

#include <unistd.h>

定义函数:

char * getcwd(char * buf, size_t size);

函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。

注:
1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝对路径的字符串长度超过参数size 大小,则返回NULL,errno 的值则为ERANGE。
2、倘若参数buf 为NULL,getcwd()会依参数size 的大小自动配置内存(使用malloc()),如果参数size 也为0,则getcwd()会依工作目录绝对路径的字符串程度来决定所配置的内存大小,进程可以在使用完次字符串后利用free()来释放此空间。

返回值:执行成功则将结果复制到参数buf 所指的内存空间, 或是返回自动配置的字符串指针. 失败返回NULL,错误代码存于errno.

范例

#include <unistd.h>
main()
{
  char buf[80];
  getcwd(buf, sizeof(buf));
  printf("current working directory : %s\n", buf);
}

执行:

current working directory :/tmp

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

#include <unistd.h>

定义函数:

int chdir(const char * path);

函数说明:chdir()用来将当前的工作目录改变成以参数path 所指的目录.

返回值执:行成功则返回0, 失败返回-1, errno 为错误代码.

范例

#include <unistd.h>
main()
{
  chdir("/tmp");
  printf("current working directory: %s\n", getcwd(NULL, NULL));
}

执行:

current working directory :/tmp

C语言chroot()函数:改变文件根目录
头文件:

 #include <unistd.h>

定义函数:

int chroot(const char * path);

函数说明:chroot()用来改变根目录为参数path 所指定的目录。只有超级用户才允许改变根目录,子进程将继承新的根目录。

返回值:调用成功则返回0, 失败则返-1, 错误代码存于errno.

错误代码:
1、EPERM 权限不足, 无法改变根目录。
2、EFAULT 参数path 指针超出可存取内存空间。
3、ENAMETOOLONG 参数path 太长。
4、ENOTDIR 路径中的目录存在但却非真正的目录。
5、EACCESS 存取目录时被拒绝。
6、ENOMEM 核心内存不足。
7、ELOOP 参数path 有过多符号连接问题。
8、EIO I/O 存取错误。

范例

/* 将根目录改为/tmp, 并将工作目录切换至/tmp */
#include <unistd.h>
main()
{
  chroot("/tmp");
  chdir("/");
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索目录
c语言
c语言获取目录下文件、c语言获取当前目录、c语言获取临时目录、c语言获取文件目录、c语言如何改变世界,以便于您获取更多的相关知识。

时间: 2024-08-01 16:11:33

C语言中获取和改变目录的相关函数总结_C 语言的相关文章

C语言中获取文件状态的相关函数小结_C 语言

C语言stat()函数:获取文件状态头文件: #include <sys/stat.h> #include <unistd.h> 定义函数: int stat(const char * file_name, struct stat *buf); 函数说明:stat()用来将参数file_name 所指的文件状态, 复制到参数buf 所指的结构中. 下面是struct stat 内各参数的说明: struct stat { dev_t st_dev; //device 文件的设备编号

C语言中操作utmp文件的相关函数用法_C 语言

C语言getutent()函数:从utmp文件中取得账号登录数据头文件: #include <utmp.h> 定义函数: struct utmp *getutent(void); 函数说明:getutent()用来从utmp 文件(/var/run/utmp)中读取一项登录数据, 该数据以utmp 结构返回. 第一次调用时会取得第一位用户数据, 之后每调用一次就会返回下一项数据, 直到已无任何数据时返回NULL. utmp 结构定义如下: struct utmp { short int ut_

C语言中获取进程识别码的相关函数_C 语言

C语言getpid()函数:获取进程识别码头文件: #include <unistd.h> 定义函数: pid_t getpid(void); 函数说明:getpid ()用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件, 以避免临时文件相同带来的问题. 返回值:目前进程的进程识别码 范例 #include <unistd.h> main() { printf("pid=%d\n", getpid()); } 执行: pid=1494 /*每次

C/C++中获取数组长度的方法示例_C 语言

学过C/C++的人都知道,在C/C++中并没有提供直接获取数组长度的函数,对于存放字符串的字符数组提供了一个strlen函数获取其长度,那么对于其他类型的数组如何获取他们的长度呢? 其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时都把它定义成一个宏,比如: #define GET_ARRAY_LEN(array,len) {len = (sizeof(array) / sizeof(array[0]));} 而在C++中则可以使用模板

简单总结C语言中各种类型的指针的概念_C 语言

C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念.  常量指针:首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: char const * cp; char a='a'; 如何识别呢?根据右结合优先,先是*优先,所以这个cp变量是一个指针,然后是const修饰*,所以这是一个常量指针.即指向常量的指针. cp=&a; //正常语法 *cp=a; //错误语法,因为其指向的值是一个常量  指针常量:首先它是一个常量

详解C语言中的#define宏定义命令用法_C 语言

#define命令#define定义了一个标识符及一个串.在源程序中每次遇到该标识符时,均以定义的串代换它.ANSI标准将标识符定义为宏名,将替换过程称为宏替换.命令的一般形式为: #define identifier string 注意: 1.该语句没有分号.在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束. 2.宏名定义后,即可成为其它宏名定义中的一部分. 3.宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换.例如: #define XYZ th

C语言中的函数指针基础学习教程_C 语言

顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: A) char * (*fun1)(char * p1,char * p2); B) char * *fun2(char * p1,char * p2); C) char * fun3(char * p1,char * p2); 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2是参数,其类型为char *型,函数的返回值为char *类型. B) 也很简单,与C)表达式相比,唯一不同的就是函数的

C语言中逻辑运算符与条件运算符的学习教程_C 语言

逻辑运算符 逻辑运算符,用于对包含关系运算符的表达式进行组合,形成新的表达式:结果也是只有真或假两种情况,结果值用 BOOL 类型变量存储. 运算符 解释 结合方式 () [] -> . 括号(函数等),数组,两种结构成员访问 由左向右 ! ~ ++ -- + -  * & (类型) sizeof 否定,按位否定,增量,减量,正负号, 间接,取地址,类型转换,求大小 由右向左 * / % 乘,除,取模 由左向右 + - 加,减 由左向右 << >> 左移,右移 由左向

c语言中字符串分割函数及实现方法_C 语言

1.问题引入 自己在写一个linux下的模拟执行指令的时候,遇到了输入"cat a.c",要将该字符串分解成cat和a.c两个单独的字符串,虽然知道有strtok的存在,但是想自己尝试写一下,于是就自己写了一个,不过总是遇到这样或那样的问题,虽然最后调通了,不过确浪费了不少时间:后来作业交上去以后又仔细阅读了strtok函数,发现原来linux下已经改成strsep,所有在这里就写一下自己所走的过程. 2.自己写的字符串分割函数:用于分割指令,比如cat a.c最后会被分割成cat和a