套接字:什么导致read()返回EINVAL?

套接字客户端程序与服务器建立连接,写入一些字节并使用(阻塞) read()等待响应。

但这失败了,错误是EINVAL (“无效参数”)。 以前对socket create()bind()connect()的调用已成功完成。

我的问题

  • 这有什么不对?

平台是Linux x64。

fd附在不适合阅读的物体上; 或者使用O_DIRECT标志打开文件,并且buf中指定的地址,count中指定的值或当前文件偏移量未适当对齐。

见http://www.kernel.org/doc/man-pages/online/pages/man2/read.2.html

问题是我将1个字节的大小传递给read()函数。 似乎这不受支持
(为什么?最小尺寸是多少?它必须是2 /平台位数的倍数?)。

现在我正在通过8并且它有效。 谢谢大家的意见。