gpt4 book ai didi

c - read(2) 是 C89 规范的一部分吗?

转载 作者:行者123 更新时间:2023-12-02 01:22:14 27 4
gpt4 key购买 nike

我对 C 有点陌生。我想知道,read(2) 函数是 C89 规范的一部分,还是只是 POSIX 规范的一部分?我问是因为我试图找出 read 的返回类型,以及 here 等地方的手册页假设它是 ssize_t。但是,根据 this questionssize_t 仅在 POSIX 中是必需的,而不是常规 C . This MSDN page似乎证实了我的怀疑,因为它说

This POSIX function is deprecated. Use the ISO C++ conformant _read instead.

我掌握了 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 标准的一部分(它提到“POSIX 函数”)而不是 C 标准。

最佳答案

read() 不是也从来不是标准 C,所以如果你想编写从文件读取的可移植代码,请不要使用它;使用 fread()

另一方面,您可能想在 Posix 系统上做一些不可移植的事情,例如使用管道和套接字。在这种情况下,请继续使用 Posix 接口(interface)。

关于c - read(2) 是 C89 规范的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301636/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com