大佬教程收集整理的这篇文章主要介绍了使用scatter-gather处理短读/写的技术?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我们只是处理一堆字符缓冲区或类似的东西,这不是什么大问题.但其中一个细节是使用分散 – 聚集结构和/或离散变量作为单独的iovec项目.你如何处理readv / writev只读取/写入一个结构的一部分或一半长或类似的情况.
下面是我得到的一些人为的代码:
int fd; struct iovec iov[3]; long aLong = 74775767; int aInt = 949; char aBuff[100]; //filled from where ever ssize_t bytesWritten = 0; ssize_t bytesToWrite = 0; iov[0].iov_base = &aLong; iov[0].iov_len = sizeof(aLong); bytesToWrite += iov[0].iov_len; iov[1].iov_base = &aInt; iov[1].iov_len = sizeof(aint); bytesToWrite += iov[1].iov_len; iov[2].iov_base = &aBuff; iov[2].iov_len = sizeof(aBuff); bytesToWrite += iov[2].iov_len; bytesWritten = writev(fd,iov,3); if (bytesWritten == -1) { //handle error } if (bytesWritten < bytesToWritE) //how to gracefully conTinue?.........
for (;;) { written = writev(fd,iov+cur,count-cur); if (written < 0) goto error; while (cur < count && written >= iov[cur].iov_len) written -= iov[cur++].iov_len; if (cur == count) break; iov[cur].iov_base = (char *)iov[cur].iov_base + written; iov[cur].iov_len -= written; }
请注意,如果您不检查cur<算你读过iov的结尾可能包含零.
以上是大佬教程为你收集整理的使用scatter-gather处理短读/写的技术?全部内容,希望文章能够帮你解决使用scatter-gather处理短读/写的技术?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。