当套接字连接异常断开时,FILE流缓冲区会发生什么?

时间:2011-03-14 02:09:25

标签: 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来解决问题吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

在连接终止时,所有读/写功能都将返回错误(只有在读出输入缓冲区后才开始读取失败)。如果您想确定为什么不能读/写更多数据,请检查错误。