一直帮老板搬运代码!!!
全部博文(116)
分类: LINUX
2012-08-06 21:55:38
number = read(handle, buffer ,n) ;
上述read调用函数中,各个参数的定义如下:
handle: 这是一个已经打开的文件句柄,表示从这个文件句柄所代表的文件读取数据。
buffer: 指缓冲区,即读取的数据会被放到这个缓冲区中去。
n: 表示调用一次read操作,应该读多少数量的字符。
number:表示系统实际所读取的字符数量。
这里,如果n过大,例如n = 1000000,那么读取将不堵塞,而直接返回-1,且errno 返回的错误码是14
这个errno是什么意思呢:
#define EFAULT 14 /* Bad address */
错误的地址。这让程序员误导,而去看地址的问题或截取包,结果发现没什么问题。
其实原因就是n给的长度过长导致的。