文件I/O
来源:互联网 发布:protobuf3 json 编辑:程序博客网 时间:2024/05/17 10:39
1.open函数
通过man查看open的帮助文档发现open有两个原型分别为:
int open(const char *pahtname, int flags);
int open(const char *pathname,int flags,mode_t mode);
但c语言中并没用支持重载,那为什么open有两个原型呢?
在fcntl.h文件中发现open的真正原型是这样的:
extern int open (const char *file, int __oflag, ...);
也就是说open实际上是一个带有可变参数的函数。只有当O_CREAT
作为第二个参数时才会用到后面的可变参数。
file:为要打开文件的名字
flag:支持多个选项,下面列出几个简单的,具体可以通过man来查看:
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:读写打开
O_APPEND:每次写时都追加到文件的末尾。(即使用lseek改变文件的位置,再进行写时也会追加到文件末尾)
O_TRUNC:如果文件存在,而且为只写或读写打开,将其截断为0。
可变参数:由于决定创建文件时文件的权限,但权限不是完全由这个标准决定,还要看umask值。
2.read函数
ssize_t read(int fd, void *buf,size_t count)
从文件描述符fd中读出count个字节存在buf指向的内存中。如果count值大于SSIZE_MAX那么结果是未定义的。
3.write函数
ssize_t write(int fd,const void *buf,size_t count)
向文件描述符fd中写count个字符。buf是写入的内容。
4.lseek函数
off_t lseek(int filedes,off_t offset,int wherence)
lseek可以显示的为一个打开的文件设置偏移量。
若wherence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节。
若wherence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可正可负。
若wherence是SEEK_END,则将该文件设置为文件长度加offset,offset可正可负。
通过man查看open的帮助文档发现open有两个原型分别为:
int open(const char *pahtname, int flags);
int open(const char *pathname,int flags,mode_t mode);
但c语言中并没用支持重载,那为什么open有两个原型呢?
在fcntl.h文件中发现open的真正原型是这样的:
extern int open (const char *file, int __oflag, ...);
也就是说open实际上是一个带有可变参数的函数。只有当O_CREAT
作为第二个参数时才会用到后面的可变参数。
file:为要打开文件的名字
flag:支持多个选项,下面列出几个简单的,具体可以通过man来查看:
O_RDONLY:只读打开
O_WRONLY:只写打开
O_RDWR:读写打开
O_APPEND:每次写时都追加到文件的末尾。(即使用lseek改变文件的位置,再进行写时也会追加到文件末尾)
O_TRUNC:如果文件存在,而且为只写或读写打开,将其截断为0。
可变参数:由于决定创建文件时文件的权限,但权限不是完全由这个标准决定,还要看umask值。
2.read函数
ssize_t read(int fd, void *buf,size_t count)
从文件描述符fd中读出count个字节存在buf指向的内存中。如果count值大于SSIZE_MAX那么结果是未定义的。
3.write函数
ssize_t write(int fd,const void *buf,size_t count)
向文件描述符fd中写count个字符。buf是写入的内容。
4.lseek函数
off_t lseek(int filedes,off_t offset,int wherence)
lseek可以显示的为一个打开的文件设置偏移量。
若wherence是SEEK_SET,则将该文件的偏移量设置为距文件开始处offset个字节。
若wherence是SEEK_CUR,则将该文件的偏移量设置为其当前值加offset,offset可正可负。
若wherence是SEEK_END,则将该文件设置为文件长度加offset,offset可正可负。
- 文件I/O与标准I/O
- 标准I/O、文件I/O
- 文件I/O与标准I/O
- 异步文件 I/O
- 多媒体文件I/O
- 文件I/O
- 文件I/O操作
- 文件I/O操作
- 文件I/O操作
- 文件I/O
- I/O文件库
- 文件I/O
- 文件I/O
- 文件I/O
- 高级文件I/O
- unbuffered 文件I/O
- unix----文件I/O
- 文件I/O
- 软件度量的方法体系
- myeclipse相关
- sql server2005安全管理之用户、角色、架构 与 权限
- android sdk模拟器在linux和windows下的性能比较
- 敏捷开发产品管理系列之四:新产品研发
- 文件I/O
- 实时 Linux 架构剖析
- OSI模型的基本层次概念及对应网络协议
- Android下,不能把应用安装到SD卡上的解决办法(适用于之前可以装到SD,由于某种原因装不上的情况)
- 20111113---了解NoSQL
- centos中mysql 5.1 重置密码
- SQL Server JDBC driver
- names
- Windows XP硬盘安装Linux ISO 的方法 (1)