QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1176|回复: 1

关于网上看到一个经典的拷贝文件的代码的问题

[复制链接]
发表于 2006-2-23 20:01:45 | 显示全部楼层 |阅读模式
我是新手,请各位指教。最近在网上看到一个经典的拷贝文件的代码

while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
{
  if((bytes_read==-1)&&(errno!=EINTR)) break;
  else if(bytes_read>0)
  {
    ptr=buffer;
    while(bytes_write=write(to_fd,ptr,bytes_read))
    {
      if((bytes_write==-1)&&(errno!=EINTR))break;
      else if(bytes_write==bytes_read) break;
      /* 只写了一部分,继续写 */
      else if(bytes_write>0)
     {
        ptr+=bytes_write;
        bytes_read-=bytes_write;
      }
     }
     /* 写的时候发生的致命错误 */
     if(bytes_write==-1)break;
  }
}  
请问各位什么情况下会出现"只写了一部分,继续写"这种情况?
发表于 2006-2-24 17:38:41 | 显示全部楼层
很常见,尤其在网络程序中,主要是系统内部缓冲区不足引起的
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 22:27 , Processed in 0.054231 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表