Linux 文件IO函数(open/close/read/write/lseek)

文件描述符,非负整数。当为负数时(通常是-1),代表打开/创建文件出错。
其中文件描述默认值如下:
/* Standard file descriptors. */
#define STDIN_FILENO 0 /* Standard input. */
#define STDOUT_FILENO 1 /* Standard output. */
#define STDERR_FILENO 2 /* Standard error output. */

文件IO函数,通常包括 open,read,write,lseek,close这五个函数。
还有creat函数,但是现在用open已经可以完全替代creat。
creat = open + oflag(O_WRONLY|O_CREAT|O_TRUNC)


int open(const char *pathname , int oflag, mode_t mode);//其中mode_t 是unsigned int类型
打开pathname文件
其中oflag的组成:第一组必选其一,第二组任选[0-n]个。
第一组:文件的打开方式
O_RDONLY //只读
O_WRONLY //只写
O_RDWR //读写
第二组:其他选项
O_APPEND //将当前偏移量指向文件末尾,否则初始值为0
O_CREAT
O_EXCL
O_TRUNC
O_NOCTTY
O_NONBLOCK
O_DSYNC
O_RSYNC
O_SYNC

int close(int filedes);

关闭指定文件


off_t lseek(int filedes, off_t offset, int whence);
修改文件当前指针偏移量,成功返回执行完成后新的文件偏移量,失败返回-1;
whence取值如下:
SEEK_SET:从文件开始处(偏移量为0处);
SEEK_CUR:从当前偏移量处;
SEEK_END:从文件结尾处;
因此类似ftell函数的功能(获取当前偏移量)可以用lseek(fd, 0, SEEK_CUR);实现。

ssize_t read (int fd, void *buf, size_t nbytes);
读取描述符fd所指向文件,读取到的内容存放到buf中,读取nbytes字节。


ssize_t write (int fd, const void *buf, size_t nbytes);
向描述符fd所指向文件写入从buf中读取的数据,共写入nbytes字节。


返回值汇总:
open,成功返回非负数文件描述符,失败返回-1;
close,成功返回0,失败返回-1;
lseek,成功返回执行完成后新的文件偏移量,失败返回-1;
read,成功返回读取到的字节数,失败返回-1;
write,成功返回成功写入字节数,失败返回-1;

其他:
关闭一个文件时,还会释放该进程加在该文件上的所有记录锁。
当一个进程终止时,内核自动关闭它所有打开的文件。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值