mkdir() - Unix、Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

mkdir() - Unix、Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

mkdir - 创建目录

语法

#include <sys/stat.h> 
#include <sys/types.h> 

int mkdir(const char *pathname, mode_t mode);

描述

mkdir() 尝试创建一个名为 pathname 的目录。

参数 mode 指定要使用的权限。它以通常的方式由进程的 umask 修改:创建的目录的权限为 (mode & ~umask & 0777)。创建的目录的其他模式位取决于操作系统。对于 Linux,请参见下文。

新创建的目录将由进程的有效用户 ID 拥有。如果包含文件的目录设置了 set-group-ID 位,或者如果文件系统以 BSD 组语义挂载,则新目录将继承其父级的组所有权;否则,它将由进程的有效组 ID 拥有。

如果父目录设置了 set-group-ID 位,则新创建的目录也将设置该位。

返回值

mkdir() 在成功时返回零,如果发生错误则返回 -1(在这种情况下,errno 将被相应地设置)。

错误

标签描述
EACCES 父目录不允许进程写入权限,或者 pathname 中的一个或多个目录不允许搜索权限。(另请参见 path_resolution(2)。)
EEXIST pathname 已经存在(不一定是作为目录)。这包括 pathname 是符号链接(无论是否悬空)的情况。
EFAULT pathname 指向您可访问的地址空间之外。
ELOOP 在解析 pathname 时遇到太多符号链接。
ENAMETOOLONG
  pathname 太长。
ENOENT pathname 中的目录组件不存在或是一个悬空的符号链接。
ENOMEM 内核内存不足。
ENOSPC 包含 pathname 的设备没有足够的空间容纳新目录。
ENOSPC 由于用户的磁盘配额已用尽,因此无法创建新目录。
ENOTDIR
 pathname 中用作目录的组件实际上不是目录。
EPERM 包含 pathname 的文件系统不支持创建目录。
EROFS pathname 指的是只读文件系统上的文件。

符合标准

SVr4、BSD、POSIX.1-2001。

备注

在 Linux 下,除了权限位之外,只考虑 S_ISVTX 模式位。也就是说,在 Linux 下,创建的目录实际上具有模式 (mode & ~umask & 01777)。另请参见 stat(2)。

NFS 底层协议中存在许多不完善之处。其中一些会影响 mkdir()。

参见



previous next Printer Friendly

广告


  

广告



广告