我的 TCP 服务器代码是这样的:
conn_fd = accept();
stream = fdopen(conn_fd...);
//...
fp = fopen(path, "r");
while ((c = getc(fp)) != EOF)
fputc(c, stream);
如果套接字由于某种原因断开连接(以太网线被拔掉),fputc 函数会阻塞调用进程吗?流缓冲区会发生什么?
如果 fputc 功能阻塞,我可以设置 SO_SNDTIMEO 来解决问题吗?
非常感谢!
最佳答案
在连接终止时,所有读/写函数都将返回一个错误(只有在读取传入缓冲区后,读取才会开始失败)。如果您想确定为什么不能读取/写入更多数据,请检查 errno。
关于c - socket连接异常断开时,FILE流缓冲区会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294046/