计算机系统基础学习--关于IO

本文介绍了Linux系统中输入/输出(I/O)的基础知识,包括将I/O设备视为文件的概念,以及核心的I/O函数:open、close、read和write。open函数用于打开或创建文件,可以根据参数设置访问模式和权限;close函数用于关闭文件;write函数用于向文件写入数据,而read函数则用于从文件读取数据。文中还通过示例解释了dup2函数在I/O重定向中的应用。
摘要由CSDN通过智能技术生成

**输入/输出(I/O)**是在主存和外部设备(例如磁盘文件,终端和网络)之间复制数据的过程。输入操作是从I/O设备复制到主存,而输出操作是从主存数据复制到I/o设备。
“一切皆文件”
而在Linux中所有的I/O设备统统被模型化为文件,而所有的输入输出都被当做相应的文件的读和写来执行。
进而我们认识一下打开文件函数(open),关闭文件的函数(close),读(read)和写(write)函数。

  1. Open函数
    open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。
    我们先看看Open函数在Linux下的定义
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *filename, int flags, mode_t mode);

open函数将filename转换成一个文件描述符,并且返回描述符数字。返回的描述符总是在在进程中没有打开的最小描述符。
flags参数指明了进程打算如何访问这个文件。而需要注意的是:参数flag必须指定以下三个常量的一种,且只允许指定一个
O_RDONLY:只读模式
O_WRONLY:只写模式
O_RDWR:可读可写
mode参数表示设置文件访问权限的初始值
如 open(filename,O-WRONLT | O-CREAT | O-TRUNC,mode)是创建一个文件的标准格式。
2.Close函数
close函数用于关闭一个已经打开的文件。函数原型如下:

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

返回值:若成功则返回0,出错则返回-1
参数:fd是文件标识符,是通过open函数获得的文件标识符。

3.Write函数
write函数用于向打开的文件写入数据。函数原型如下:

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t nbtyes

返回值:如果写成功则返回实际写入的字节数,若出错则返回-1。
参数:
fd 文件标识符,由调用open函数从内核获得。
*buf 待写入数据的缓冲区地址。
nbytes 需要写入文件的数据字节数。
即Write函数从内存位置buf复制到至多n个字节到描述符fd当前文件位置。

4.read函数
read函数可以读取文件。读取文件指从某一个已打开地文件中,读取一定数量地字符,然后将这些读取的字符放入某一个预存的缓冲区内,供以后使用。
read函数原型:

ssize_t read(int fd,void *buf,size_t count)

read 函数从描述符为fd的当前文件位置复制到最多为count个字节到内存位置buf.

下边我们看一些例子:

1

/* $begin cpstdin 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值