我正在使用阻塞模式下的socket进行编程,我对send
方法有疑问。
在send
方法的man页面中,它说:
[EINTR] 在传输任何数据之前,信号中断了系统调用。
这意味着如果在传输任何数据之前,信号中断了系统调用,则send
将返回-1,并且errno
将设置为EINTR
。
我的问题是,如果在信号中断系统调用时已经发送了一部分数据,会返回什么。似乎不应该返回-1,因为它已经发送了一些数据。我认为它将返回已传输的数据量,这意味着在阻塞模式下,send
方法可能会返回少于您作为第三个参数传递的数据量。
ssize_t send(int socket, const void *buffer, size_t length, int flags);