文件I/O

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可正可负。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值