接手的一个小程序,因为原本已经在线上运行了一段时间,本着能不动就不动的原则,没有调整源码。但是看到源码中读写还是直接调用的read和write的,还是忍不住把这块改了
int myRead(int fd, char *buf, int count)
{
ssize_t nread, totlen = 0;
while(totlen != count) {
nread = read(fd,buf,count-totlen);
if (nread == 0){
return totlen;
}
if ((nread == -1) && (errno != EAGAIN) && (errno != EINTR)){
return -1;
}
totlen += nread;
buf += nread;
}
return totlen;
}
int myWrite(int fd, char *buf, int count)
{
ssize_t nwritten, totlen = 0;
while(totlen != count) {
nwritten = write(fd,buf,count-totlen);
if (nwritten == 0){
return totlen;
}
if ((nwritten == -1) && (errno != EAGAIN) && (errno != EINTR)){
return -1;
}
totlen += nwritten;
buf += nwritten;
}
return totlen;
}