这里就不贴代码了。代码来自《UNIX 网络编程》第一卷(3rd edition)P72,P73
具体来看看为什么要这样写。
对于readn()
首先定义了两个size_t的变量:nleft表示还剩下的字节数;nread表示已经读取的字节数
接着是一个字符型指针变量:ptr,指向读取的目标缓冲区(ptr = vptr)
我们要读取的时n字节的数据,于是就先将赋值:nleft = n;(意思就说当前初始时,还剩了n个字节等待读取呢)
接着进入循环while,只要还剩下了字节也就是 nleft>0,就进入循环:
开始读取字节了,这里简写下