关于writev函数
用writev函数通过socket送信,不能在拔掉网线后即时的检验到网络错误。
有没有办法能一拔掉网线,writev函数就调用失败呢?
我试了一种方法,在writev调用后,立即刷socket缓冲,然后去判断errno,
可是即使这样也不会产生errno,请大大们帮忙帮忙。
部分代码如下:
FILE* ssp = fdopen(Sd,"r+");
if(ssp == NULL){
Putlog(LL_DEBUG,"fdopen error:%s\n",strerror(errno));
exit(1);
}
errno=0;
writev(Sd, iov, 2);
fflush(ssp);
if(errno != 0) Putlog(LL_DEBUG,"--------write error:%s\n",strerror(errno));
上面代码fdopen后不为空,但会产生一个errno,illegal seek!
writev-〉fflush后不会产生errno。