Linux下mkdir函数

本文详细介绍了Linux系统中mkdir函数的使用方法,包括其头文件、函数原型、参数含义及返回值等。此外,还解释了如何通过mode参数设置新建目录的权限。

Linux下mkdir函数

头文件库:
#include <sys/stat.h>
#include <sys/types.h>
函数原型:
int mkdir(const char *pathname, mode_t mode);
函数说明:
mkdir()函数以mode方式创建一个以参数pathname命名的目录,mode定义新创建目录的权限。
返回值:
若目录创建成功,则返回0;否则返回-1,并将错误记录到 全局变量errno中。
mode方式:可多个权限相或,如0755表示S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH
代表:该文件所有者拥有读,写和执行操作的权限,该文件用户组拥有可读、可执行的权限,其他用户拥有可读、可执行的权限。
S_IRWXU
00700权限,代表该文件所有者拥有读,写和执行操作的权限
S_IRUSR(S_IREAD)
00400权限,代表该文件所有者拥有可读的权限
S_IWUSR(S_IWRITE)
00200权限,代表该文件所有者拥有可写的权限
S_IXUSR(S_IEXEC)
00100权限,代表该文件所有者拥有执行的权限
S_IRWXG
00070权限,代表该文件用户组拥有读,写和执行操作的权限
S_IRGRP
00040权限,代表该文件用户组拥有可读的权限
S_IWGRP
00020权限,代表该文件用户组拥有可写的权限
S_IXGRP
00010权限,代表该文件用户组拥有执行的权限
S_IRWXO
00007权限,代表其他用户拥有读,写和执行操作的权限
S_IROTH
00004权限,代表其他用户拥有可读的权限
S_IWOTH
00002权限,代表其他用户拥有可写的权限
S_IXOTH
00001权限,代表其他用户拥有执行的权限
Linux系统中,`mkdir`函数是用于创建目录的C库函数,它通常通过调用`syscall()`或直接操作文件系统的API来实现。如果`mkdir`函数运行失败,可能是由于以下几个原因: 1. 权限不足:当前用户可能没有在指定路径下创建目录所需的权限。需要检查是否有足够的`chmod 0755`等类似命令所需的权限。 2. 目录已存在:尝试创建的目录路径已经存在,`mkdir`不会覆盖已存在的目录。可以先使用`test -d`或`ls -l`确认目标路径是否已存在。 3. 路径错误:路径可能是不存在的、太长,或者包含非法字符,如..(上一级目录)。 4. 文件系统空间不足:如果磁盘空间已满,也会导致`mkdir`失败。 5. 错误处理:在实际编程中,如果没有正确捕获和处理`errno`全局变量(如`errno == EEXIST`),当错误发生时可能会返回错误状态。 要解决这个问题,你可以按照以下步骤排查: 1. 检查权限:使用`sudo`切换到管理员权限,或者修改当前用户的权限设置。 2. 判断路径:确保提供的路径正确无误,并非循环引用或其他无效路径。 3. 检查空间:查看目标目录所在的卷是否有剩余空间。 4. 添加错误处理:在调用`mkdir`前,先检查`errno`并处理可能出现的错误情况。 如果你是在编写C程序,记得检查上述点并添加适当的错误处理代码,例如: ```c #include <sys/stat.h> #include <err.h> int mkdir_errno(const char *path) { if (mkdir(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) != 0) { if (errno == EEXIST) return 0; // 知道目录已经存在 else perror("mkdir failed"); return -1; } return 0; } // 使用示例 if (mkdir_errno("/path/to/directory") < 0) { // 处理错误... } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值