C语言 open函数说明
前言全局说明
C语言 open函数说明
一、说明
二、函数原型
2.1
int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);
2.2
文件名:
三、使用示例
3.1 示例1
fd=open(文件名,O_RDONLY|O_CREAT,0755)
3.2 示例2
fd=open(argv[1],O_CREAT|O_RDWR,0755)
使用 | 竖线或,来匹配多个模式
四、速查表格
4.1 flags 参数说明
The full list of file creation flags and file status flags is as follows:
常量 | 权限 | 说明 | 备注 |
---|---|---|---|
O_RDONLY | 以只读方式打开文件。 | ||
O_WRONLY | 以只写方式打开文件。 | ||
O_RDWR | 以可读写方式打开文件。 |
上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(|)运算符组合。
常量 | 权限 | 说明 | 备注 |
---|---|---|---|
O_APPEND | 每次写操作都写入文件的末尾 | ||
O_ASYNC | |||
O_CLOEXEC | (since Linux 2.6.23) | ||
O_CREAT | 若欲打开的文件不存在,则自动建立该文件。 | ||
O_DIRECT | (since Linux 2.4.10) | ||
O_DIRECTORY | 如果参数pathname 所指的文件并非为一目录,则会令打开文件失败。 | ||
O_DSYNC | |||
O_EXCL | |||
O_LARGEFILE | |||
O_NOATIME | (since Linux 2.6.8) | ||
O_NOCTTY | 如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。 | ||
O_NOFOLLOW | 如果参数pathname 所指的文件为一符号连接,则会令打开文件失败。 | ||
O_NONBLOCK or O_NDELAY | 以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。 | ||
O_PATH | (since Linux 2.6.39) | ||
O_SYNC | 以同步的方式打开文件。 | ||
O_TMPFILE | (since Linux 3.11) | ||
O_TRUNC | 若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的 资料也会消失。 |
4.2 mode 参数说明
O_CREAT
常量 | 权限 | 中文说明 | 原文说明 | 备注 |
---|---|---|---|---|
S_IRWXU | 00700 | user (file owner) has read, write, and execute permission | ||
S_IRUSR or S_IREAD | 00400 | 使用者(拥有者)能够读这个文件 | user has read permission | |
S_IWUSR | 00200 | 使用者(拥有者)能够写这个文件 | user has write permission | |
S_IXUSR | 00100 | 使用者(拥有者)能够执行这个文件 | user has execute permission | |
S_IRWXG | 00070 | group has read, write, and execute permission | ||
S_IRGRP | 00040 | 拥有者所在组的成员能够读这个文件 | group has read permission | |
S_IWGRP | 00020 | 拥有者所在组的成员能够写这个文件 | group has write permission | |
S_IXGRP | 00010 | 拥有者所在组的成员能够执行这个文件 | group has execute permission | |
S_IRWXO | 00007 | others have read, write, and execute permission | ||
S_IROTH | 00004 | 其他人(任何人)能够读这个文件 | others have read permission | |
S_IWOTH | 00002 | 其他人(任何人)能够写这个文件 | others have write permission | |
S_IXOTH | 00001 | 其他人(任何人)能够执行这个文件 | others have execute permission | |
S_ISUID | 0004000 | set-user-ID bit | ||
S_ISGID | 0002000 | set-group-ID bit (see inode(7)). | ||
S_ISVTX | 0001000 | sticky bit (see inode(7)). |
4.3 错误返回值
RETURN VALUE
open(), openat(), and creat() return the new file descriptor, or -1 if an error occurred (in which case, errno is set appropriately).
ERRORS
常量 | 中文说明 | 原文说明 | 备注 |
---|---|---|---|
EACCES | 参数pathname所指的文件不符合所要求测试的权限。 | ||
EDQUOT | |||
EEXIST | 参数pathname 所指的文件已存在,却使用了O_CREAT和O_EXCL旗标。 | ||
EFAULT | 参数pathname指针超出可存取内存空间。 | ||
EFBIG | |||
EINTR | |||
EINVAL | 参数mode 不正确。 | ||
EISDIR | |||
ELOOP | 参数pathname有过多符号连接问题。 | ||
EMFILE | |||
ENAMETOOLONG | 参数pathname太长。 | ||
ENFILE | |||
ENODEV | |||
ENOENT | |||
ENOMEM | 核心内存不足。 | ||
ENOSPC | |||
ENOTDIR | 参数pathname不是目录。 | ||
ENXIO | |||
EOPNOTSUPP | |||
EOVERFLOW | |||
EPERM | |||
EROFS | 欲测试写入权限的文件存在于只读文件系统内。 | ||
ETXTBSY | |||
EWOULDBLOCK | |||
EBADF | |||
EIO I/O | 存取错误。 |
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://blog.csdn.net/zjhkobe/article/details/6633435
https://blog.csdn.net/zhizhengguan/article/details/111693888
https://www.cnblogs.com/eastnapoleon/p/3309917.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2023-06-26 read: arg count