在看unix时有这样一句话,“其返回值通常与参数n b y t e s的值不同,否则表示出错”以及这样的程序:if ((res = write(handle, string, length)) != length){printf("Error writing to the file.\n");exit(1);}不知道为什么,有些人说“大多数情况write成功后的返回值都等于你传入的长度”,如果真如他所说,上面的程序岂不是没有通用性(程序是《unix环境编程》及百度百科中有的)???
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
大多数情况下,write成功后返回的写入字节数都等于你传入的长度。
但是如果你要写的长度超过了的文件的最大可能时,比方说,你的磁盘还剩下128个字节,这时你向磁盘上的某个文件一次性写512个字节,返回值就是128,只有前128个字节成功写入。
再比如,你用write写的不是一个普通文件,而是设备文件/socket等,那也可能返回值小于你指定的值,这就可能是具体设备的限制等,比如写入的数量超过了缓冲大小等。
添加回答
举报
0/150
提交
取消