Linux基础IO

在学习C语言时我们接触过基础IO:输入/输出:fclose、fseek、fread、fwrite(为带缓冲的IO)等。

首先,我们应该知道在linux系统下,一切皆文件。普通文件、目录、字符设备、块设备和网络设备(套接字)都被当做文件来处理,所以对文件的操作,就提供了一套统一的接口来实现文件IO。 

下面和大家看一下Linux系统中的文件IO:即打开文件、读文件、写文件。在linux系统中,实现这些操作我们主要使用5个函数:open、read、write、lseek、close。这些函数也被成为不带缓冲的IO

    既然linux下一切皆文件,那么就会有描述这些文件的信息:文件描述符。文件描述符是一个非负整数。当打开或创建一个文件时,内核将会向进程返回一个描述符。对文件进行IO操作使用接口时,也要将其作为参数传递给这些接口。文件描述符的变化范围是0~OPEN_MAX-1。而文件描述符的分配规则是寻找最小的未使用的下标。当一个进程运行起来之后,按照惯例,默认打开了三个文件:0与进程的标准输入关联,1与进程的标准输出关联,2与进程的标准错误关联。

  • open:在Linux下用man手册查open接口的用法。其中参数  1.pathname是要打开或创建的文件的名字  2.flags参数是有多个常量可供选择的:(只读打开O_RDONLY;    只写打开O_WRONLY;    读写打开O_RDWR)是必须选择其中一个的,还有几个常量是可供选择的:O_CREAT文件不存在则创建,存在则打开;O_EXCL与O_CREAT同用,若文件存在则报错; O_TRUNC:打开文件的同时,清空原有内容等等可以选择的,当需要多个常量进行修饰是用“或”运算。 3.mode是创建一个文件时使用的,代表文件权限。      函数返回的文件描述符一定是最小的未用描述符数值。

  • read:当read成功时,则返回独到的字节数;若已到文件末尾,返回0;若出错,返回-1。

  • lseek:显式地为一个打开文件设置偏移量(按照系统默认,当打开一个文件没有指定O_APPEND选项时,文件偏移量为0)。

 

重定向:dup2原理:将原本描述符所对应的下标文件另一个文件的描述符,经常用来重定向进程的stdin、stdout、stderr。用newfd参数指定新描述符的值,若newfd已经打开,则先将其关闭;若oldfd等于newfd,则不关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值