-
Notifications
You must be signed in to change notification settings - Fork 54
read
果冻虾仁 edited this page Nov 14, 2017
·
12 revisions
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);| 参数 | 描述 |
|---|---|
| fd | 文件描述符 |
| buf | 读取的数据存放在buf指针指向的缓冲区 |
| count | 读取的字节数 |
关于count:如果buf是一个字符数组名,那么count就用它的sizeof值。若buf是字符指针(字符串)则count用它的strlen值。
若果函数执行成功,返回读取的字节数,如果遇到EOF,则返回0。出错返回**-1**,并设置相应errno值。
- 当我指定要读取100个字节的时候,在读完30个字节后,遇到了EOF,那么这时立即返回30,接下来继续执行read函数的时候返回0。
- 从终端设备读,通常以行为单位,读到换行符就返回。
- 当出错时(即返回-1),如果errno的值是EINTR,表示遇到调用信号而中断了读取,那么我们可以再次尝试read。
| write | fread |
|---|
Talk is cheap, show me the code!
C语言API包含部分标准C的API、POSIX标准的系统编程API(一些Linux独有的系统API会单独注明)。
大部分头文件源码在/usr/include目录下。
因为涉及到大量的POSIX编程。所以最好下载POSIX函数的man手册。
apt-get install manpages-posix
apt-get install manpages-posix-dev
默认安装了manpages-dev,所以不装POSIX的man手册是可以查看绝大部分API的。
但是不装的话,有些API是不能看到的,比如posix_spawn函数。
yum install man-pages.noarch
关于目录
左侧的目录并非以函数为索引依据,主要是以系统的man手册页面为索引依据。
比如exec里面包含6个函数、pipe里面包含pipe()和pipe2()两个函数,但是它们都是属于一个man页面中。