最新消息:

Linux Socket 学习笔记17-标准I/O的关闭

IO admin 2894浏览 0评论

当打开多个文件描述符时就不能再简单的使用shutdown()函数了,因为shutdown()函数是不考虑套接口上打开的文件描述符个数的.

当连接建立后,我们需要考虑3种情况:

  • (在只关闭写端的情况下)进程只等待接收数据,而不再写数据.
  • (在只关闭读端的情况下)进程只试探写数据,而不再接收数据.
  • (同时关闭读写端的情况下)进程不进行读写操作.

第一中情况用源码表示:

fflush(wx);
shutdown(fileno(wx),SHUT_WR);
fclose(wx);

在关闭之前要先清除输出流,使用函数fflush().fileno()函数用于获得文件描述符.

第二中情况用源码表示:

shutdown(fileno(rx),SHUT_RD);
fclose(rx);

第三中情况用源码表示:

fclose(wx);
shutdown(fileno(rx),SHUT_DOWN);
fclose(rx);

转载请注明:爱开源 » Linux Socket 学习笔记17-标准I/O的关闭

您必须 登录 才能发表评论!