c - socket连接异常断开时,FILE流缓冲区会发生什么?

标签 c linux network-programming

我的 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/

相关文章:

c - 为什么我的程序打印出奇怪的数组值?

c - Unix shell : how do I check user input to see if it's a valid unix command?

linux - 如何使用 shell 脚本读取其中包含一些文本字符串的二进制文件?

c++ - 通过网络发送结构

将 char 指针数组转换为 void 指针,然后再转换回来

创建 DNS 响应消息

c - GtkApplication 和 gtk_init 有什么区别?

c++ - 使用 C++ 在 Linux 中将文件移动到垃圾箱

android - Android 上的简单速度测试应用程序建议

networking - 我需要 IP 地址吗?