LinuxI/O编程

Linux系统调用
系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户可以获得操作系统内核提供的特殊服务。
在linux中用户程序不能直接访问内核提供的服务,程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。

文件I/O介绍
大多数文件I/O只用到5个函数:open,read,write,lseek(定位),close

文件描述符
对于内核,所有打开文件都由文件描述符引用,是一个非负整数。

open

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname,int oflag,mode_t mode);

返回:若成功为文件描述符,若出错为-1

pathname:打开或创建的文件名字
oflag:说明此函数的多个选择项
(O_RDONLY只读打开;
O_WRONLY只写打开;
O_RDWR读写打开;
O_APPEND每次写都加到文件的尾端;
O_CREAT文件不存在时创建,使用时同时创建第三个选项;
O_EXCL如果同时指定了O_CREAT,而文件已存在则出错,可以测试一个文件是否存在,如果不存在则创建此文件成为一个原子操作
O_TRUNC如果文件存在,且为只读或只写成功打开,则将其长度截短为0
O_NOCTTY如果pathname指的是终端设备,则不将此设备作为此进程的控制终端
O_NONBLOCK如果pathname指的是一个FIFO、一个块特殊文件或一个字符特殊文件,则此选择项为此文件的本次打开操作和后续的I/O操作设置非阻塞方式
O_SYNC使每次write都等到物理I/O操作完成)
mode:当创建新文件时才使用第三个参数
例子:open(“test”,O_PDWR|O_CREAT,10705)

例子:
open("test",O_PDWR|O_CREAT,10705)////1是用户ID,0是设置组ID,后三位和linux权限设置一样

creat
创建一个新文件,不足在于以只写方式打开所创建的文件
int creat(const char *pathname,mode_t mode);
此函数等价于open(pathname,O_WRONLY|O_CREAT|O_TRUNC,mode);

close

#include <unistd.h>
int close(int filedes);

返回:成功为0,出错为-1

I/O读写
read

#include <unistd.h>
ssize_t read(int feledes,void *buff,size_t nbytes);

返回:读到的字节数,已到文件尾为0,出错为-1
(字符串处理时记得加/0结束符)

write
打开文件写数据
ssize_t write(int feledes,void *buff,size_t nbytes);

lseek

#include <unistd.h>
#include <sys/types.h>
off_t lseek(int filesdes,off_t offset,int whence);

返回:成功为新的文件位移,出错为-1
whence为SEEK_SET,则将文件的位移量设置为距文件开始处offset个字节
whence为SEEK_CUR,则将文件的位移量设置为其当前值加offset个字节
whence为SEEK_END,则将文件的位移量设置为文件长度加offset个字节

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值