我对C有点新鲜。我想知道,C89规范的read(2)
功能部分,还是POSIX规范?我问,因为我试图找出read
的返回类型,而here等地方的手册页说它是ssize_t
。但是,ssize_t
仅在POSIX中需要,而不是根据this question的常规C. This MSDN page似乎证实了我的怀疑,因为它说
不推荐使用此POSIX功能。改为使用符合ISO C ++标准的_read。
我抓住了draft of the C89 standard,并没有在目录中提及阅读。但是,提到fread
:http://port70.net/~nsz/c/c89/c89-draft.html#4.9.8.1
那么最好使用例如从标准输入中读取fread(buf, 1, sizeof(buf), stdin)
而不是read(STDIN_FILENO, buf, sizeof(buf))
?
编辑:抱歉让您感到困惑。我没有引用MSDN来建议read
被弃用,只是为了表明它确实是POSIX标准的一部分(它提到了#34; POSIX函数")而不是C标准。 / p>
答案 0 :(得分:2)
read()
不是,而且从来都不是标准C,所以如果你想编写从文件中读取的可移植代码,请不要使用它;使用fread()
。
另一方面,您可能希望在Posix系统上执行不可移植的操作,例如使用管道和套接字。在这种情况下,请继续使用Posix接口。