一、mkdir
mkdir
是一个用于创建目录(文件夹)的命令或系统调用。它的名称是 "make directory" 的缩写,用于在文件系统中创建新的目录。在不同的操作系统中,mkdir
可能有不同的使用方式和选项。
通常,mkdir
命令或系统调用接受以下参数:
-
pathname:要创建的目录的路径名称。这是必选参数,它指定了新目录的位置和名称。
-
mode:权限模式(仅适用于系统调用)。在一些操作系统上,你可以指定新创建目录的权限,以确定哪些用户可以访问、读取和写入这个目录。权限通常以八进制表示,例如 0777,其中每一位代表不同的权限。常见的权限位包括:
- 4:读权限(r)
- 2:写权限(w)
- 1:执行权限(x)
你可以通过将这些权限位相加来创建所需的权限组合。例如,0777 表示所有用户都有读、写和执行权限。
/*
*
# include <sys/stat.h>
# include <sys/types.h>
int mkdir (const char *pathname , mode_t mode);
作用: 创建目录名称
mode: 权限,八进制数
返回值:
成功 0
失败 -1
*/
# include <sys/stat.h>
# include <sys/types.h>
#include <stdio.h>
int main(){
// window下 mkdir只有一个参数 , linux : ret =mkdir("aaa",0777);
int ret =mkdir("aaa");
if(ret==-1){
perror("mkdir");
return -1;
}
return 0;
}
二、chdir
chdir
是一个C语言中的系统调用,用于修改进程的当前工作目录(Current Working Directory,CWD)。它允许程序在运行时切换到不同的目录,从而影响了程序在文件系统中的位置。以下是关于 chdir
函数的一些重要信息:
参数:
path
:一个字符串,指定要设置为当前工作目录的目标目录的路径。
返回值:
- 如果成功,
chdir
返回0。 - 如果失败,
chdir
返回-1,并设置全局变量errno
来指示错误的类型。
作用:
chdir
用于改变进程的当前工作目录,将其切换到指定的目录。- 修改当前工作目录后,进程执行文件和目录操作时将相对于新的当前工作目录。
- 这对于需要在不同目录中执行文件或文件操作的程序非常有用。
- 需要注意的是,
chdir
只能修改当前进程的工作目录,不会影响其他进程的工作目录。而且,在切换工作目录后,进程对于文件和目录的访问都将相对于新的工作目录。这对于需要在不同目录中执行文件操作的程序很有用。
/*
*
chdir(const char *path);
作用:
修改进程的工作目录
*path:
修改工作目录
*
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <limits.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "fcntl.h"
int main() {
char cwd[PATH_MAX]; // 用于存储当前工作目录的缓冲区
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working directory: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
int ret = chdir("/czhangccc/dad");
if(ret==-1){
perror("chdir");
return -1;
}
int fd = open("child.txt",O_CREAT|O_RDWR,0664);
if(fd==-1){
perror("fd");
return -1;
}
close(fd);
char cwd1[PATH_MAX]; // 用于存储当前工作目录的缓冲区
if (getcwd(cwd1, sizeof(cwd1)) != NULL) {
printf("Current working directory: %s\n", cwd1);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
三、getcwd
getcwd
是一个C语言中的系统调用,用于获取当前进程的工作目录(Current Working Directory,CWD)。工作目录是指当前进程在文件系统中的位置,它影响了进程执行文件和目录操作时的相对路径。
参数:
buf
:一个指向字符数组的指针,用于存储获取到的工作目录。通常,这个数组是足够大以容纳工作目录的完整路径。size
:buf
数组的大小,以字节数为单位。
返回值:
- 如果成功,
getcwd
返回一个指向存储工作目录路径的缓冲区buf
的指针。 - 如果失败,
getcwd
返回NULL
,并设置全局变量errno
以指示错误的类型。
作用:
getcwd
用于获取当前进程的工作目录,也就是当前所在的目录的路径。- 当你需要知道程序在文件系统中的位置或执行文件操作时,这个函数非常有用。
- 需要注意的是,
getcwd
函数通常要求buf
数组足够大以容纳工作目录的完整路径,否则可能会截断路径。因此,在使用时,应该确保为buf
分配足够大的内存空间,或者在适当的情况下进行错误处理。
/*
char *getcwd(char *buf,size_t size);
作用:
获取当前工作的目录
参数:
buf : 存储的路径,指向的是一个数组
size: 数组大小
返回值:
返回的指向的一块内存,这个书韩剧就是第一个参数
*/
#include <stdio.h>
#include <unistd.h>
int main() {
char buf[185]; // 用于存储当前工作目录的缓冲区
if (getcwd(buf, sizeof(buf)) != NULL) {
printf("Current working directory: %s\n", buf);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}