c语言高手来..这句话什么意思ptr=ptr+bytes_write;bytes_read=bytes_read-bytes_write;

[复制链接]
查看11 | 回复1 | 2010-4-4 20:04:52 | 显示全部楼层 |阅读模式
if((bytes_write==-1)&&(errno!=EINTR))break; else if(bytes_write==bytes_read)break; else if(bytes_write>0){ptr=ptr+bytes_write;bytes_read=bytes_read-bytes_write;}先分析一下错误代码:如果write()失败,返回-1,错误代码存入errno.EINTR:此调用被信号所中断。EAGAIN:当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。EBADF: 参数fd非有效的文件描述词,或该文件已关闭第一个判断中指明了 "&&(errno!=EINTR)" 也就是说如果因为EINTR而停止写入,循环不退出.这时写入的字节数bytes_write <= bytes_read,进入第二/三个判断. ptr指向尚未写入的剩余数据首地址,pytes_read重新赋值为剩余数据大小,继续写.如此循环直到读到的数据全部写入为止.
回复

使用道具 举报

千问 | 2010-4-4 20:04:52 | 显示全部楼层
wirte
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行