C ++ socket send / recv vs write / read

时间:2013-11-14 07:22:37

标签: c++ linux sockets

在socket ssize_t send(int __fd, const void* __buf, size_t __n, int __flags)中,我们得到了这个__flags参数。我通过连接使用MSG_NOSIGNAL标志。有没有办法在write中实现此标记功能?由于我通过连接使用此标志,因此可以在创建socket时设置它。随意提及如果有办法实现所有__flag功能。

1 个答案:

答案 0 :(得分:35)

没有。使用write写入套接字时,与send参数设置为零时调用flags相同。

来自official POSIX reference

  

如果 fildes 指的是套接字, write()应相当于send(),且不设置标记。


然而,有一种方法可以设置"永久保留此标志,即忽略SIGPIPE信号:

signal(SIGPIPE, SIG_IGN);