坚持 成长 每日一篇
readLine读取一行数据
返回-1表示读取失败,注意返回的数据是带\n。
ssize_t readLine(int fildes, void *buf, size_t nbyte)
{
int offset = 0;
ssize_t ret = -1;
while ((nbyte-offset) > 0)
{
ret = read(fildes, buf + offset, 1);
if (ret == 1)
{
offset++;
char ch = *((char *)(buf + offset - 1));
if (ch == '\n')
{
return offset;
}
}
else if (ret == 0)
{
return offset;
}
else
{
return -1;
}
}
return offset;
}
readN读取固定字节
读取固定字节,都到结尾返回已读子节数,-1表示读取失败
ssize_t readN(int fildes, void *buf, size_t nbyte)
{
int offset = 0;
ssize_t ret = -1;
while ((nbyte-offset) > 0)
{
ret = read(fildes, buf + offset, nbyte-offset);
if (ret > 0)
{
offset += ret;
}
else if (ret == 0)
{
return offset;
}