read/write函数

旧街凉风 提交于 2020-02-18 03:33:47

调用read函数从打开文件读数据。

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

从 filedes 中读取数据到 buf 中,nbytes 是要求读到的字节数。

返回值:若成功则返回实际读到的字节数,若已到文件尾则返回0,若出错则返回-1。

当从终端设备读时,通常一次最多读一行。

ssize_t 提供带符号的返回值,size_t不带符号。

 


 

调用write函数向打开的文件写数据。

 

#include<unistd.h>
ssize_t write (int filedes, const void *buf, size_t nbytes);

 

从 buf 中写数据到 filedes 中,nbytes 是相求写入的字节数。

返回值:返回值通常与参数 nbytes相同,否则表示出错。


 

 

 

文件描述符 filedes是一个 int型数,通常用文件描述符0与进程的标准输入相关联,文件描述符1与进程的标准输出相关联,文件描述符2与进程的标准出错输出相关联。在依从POSIX的应用程序中,幻数0,1,2应当替换成符号常量 STDIN_FILENO,STDOUT_FILENO 和 STDERR_FILENO。这些常量都定义在头文件<unistd.h>中。

标准输入/输出常量 stdin 和 stdout 定义在头文件 <stdio.h>中,分别表示标准输入和标准输出文件。是指针类型,struct _IO_FILE *

进程终止时,系统会关闭该进程的所有打开的文件描述符,所以程序不用关闭输入和输出文件。


 

 

当度量一个进程的执行时间时,unix系统使用三个进程时间值:

  1. 时钟时间
  2. 用户cpu时间
  3. 系统cpu时间

时钟时间是进程运行的时间总量。

用户cpu时间是执行用户指令所用的时间。

系统cpu时间是为该进程执行内核程序所经历的时间。用户cpu时间和系统cpu时间之和常被称为CPU时间。


 

 

大多数文件系统为改善其性能都采用某种预读( read ahead)技术。当检测到正进行顺序读取时,系统就试图读入比应用程序所要求的更多数据,并假想应用程序很快就会读这些数据。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!