ssize_t是什么类型的?
解释一:为了增强程序的可移植性,便有了size_t,它是为了方便系统之间的移植而定义的,不同的系统上,定义size_t可能不一样。
typedef unsigned long size_t
解释二:ssize_t是signed size_t,
size_t是标准C库中定义的,应为unsigned int。定义为typedef int ssize_t。
而ssize_t:这个数据类型用来表示可以被执行读写操作的数据块的大小.它和size_t类似,但必需是signed.意即:它表示的是sign size_t类型的。
socket_t:
数据类型"socklen_t"和int应该具有相同的长度.否则就会破坏BSD套接字层的填充.POSIX开始的时候用的是size_t,Linus Torvalds(他希望有更多的人,但显然不是很多)努力向他们解释使用size_t是完全错误的,因为在64位结构中size_t和int的长度是不一样的,而这个参数(也就是accept函数的第三参数)的长度必须和int一致,因为这是BSD套接字接口标准.最终POSIX的那帮家伙找到了解决的办法,那就是创造了一个新的类型"socklen_t".Linux Torvalds说这是由于他们发现了自己的错误但又不好意思向大家伙儿承认,所以另外创造了一个新的数据类型.