read和write为什么可以连续读写?

read和write为什么可以连续读写?,第1张

计算机系统中,read和write *** 作是基本的输入输出(I/O) *** 作。read *** 作是从设备中读取数据并将其加载到计算机系统的内存中,而write *** 作则是将计算机系统中的数据写入到设备中。

这两种 *** 作可以连续进行,因为在计算机系统中,设备和主存之间通常有一个缓冲区。在这个缓冲区中,数据被存储在一个临时的位置,直到它被处理或传输到目标设备。因此,当一个进程执行read *** 作时,数据会被读取到缓冲区中。当下一个进程执行write *** 作时,该数据可以从缓冲区中获取并写入目标设备中。

另外,计算机系统通常会对I/O *** 作进行优化,例如使用异步I/O(Asynchronous I/O)或多线程技术,以提高读写 *** 作的效率和并发性。这些技术可以使数据在设备和主存之间快速地移动,从而减少读写 *** 作之间的延迟和等待时间。

1、read和write是UNIX或者一些类UNIX系统,比如LINUX系统中使用的,称为LINUX系统函数。这种函数只能在特定的 *** 作系统下使用,可移植性差。fread和fwrite是C库函数。这种函数基本在任何 *** 作系统都能使用,可移植性高。

2、基础知识介绍只介绍LINUX系统函数,常用的有creat,open,close,read,write,lseek,access,一般用于文件编程

3、如何使用谈到如何使用就必须说到另一个知识,文件描述符(file

description),是一个非负数。

函数原型:int

read(int

fd,

const

void

*buf,

size_t

length)

功能:

从文件描述符fd所指向的文件中读取length个字节到buf所指向的缓存区中,返回值为实际读取的字节数

int

write(int

fd,

const

void

*buf,

size_t

length)

功能:

把length个字节从buf所指向的缓存区中写到件描述符fd所指向的文件中,返回值为实际写入的字节数

例子:

#define

LENGTH

1024

#define

BUFFES_SIZE

1024

int

n1,

n2

int

fd1,

fd2

int

buffer[BUFFES_SIZE]fd1

=

open(

"HEllo1.txt",

O_RDWR

|

O_CREAT,

O_IRUSE

|

O_IWUSR)

fd2

=

open(

"HEllo2.txt",

O_RDWR

|

O_CREAT,

O_IRUSE

|

O_IWUSR)

n1

=

read(

fd1,

buffer,

LENGTH)

n2

=

write(

fd2,

buffer,

n1)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11542776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存