Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
read(2)是否为C89规范的一部分?_C_Posix_Fread - Fatal编程技术网

read(2)是否为C89规范的一部分?

read(2)是否为C89规范的一部分?,c,posix,fread,C,Posix,Fread,我对C有些陌生。我想知道,read(2)函数是C89规范的一部分,还是仅仅是POSIX规范?我问这个问题是因为我试图找出read的返回类型,以及诸如say it'sssize\t之类的地方的手册页。但是,ssize\u t仅在POSIX中需要,而不是根据需要的常规C。似乎证实了我的怀疑,因为它说 此POSIX函数已弃用。使用ISOC++ +一致性代替读。 我拿到了那本书,目录里没有提到阅读。然而,这里提到了fread: 那么,使用例如fread(buf,1,sizeof(buf),stdin)而

我对C有些陌生。我想知道,
read(2)
函数是C89规范的一部分,还是仅仅是POSIX规范?我问这个问题是因为我试图找出
read
的返回类型,以及诸如say it's
ssize\t
之类的地方的手册页。但是,
ssize\u t
仅在POSIX中需要,而不是根据需要的常规C。似乎证实了我的怀疑,因为它说

此POSIX函数已弃用。使用ISOC++ +一致性代替读。 我拿到了那本书,目录里没有提到阅读。然而,这里提到了fread:

那么,使用例如
fread(buf,1,sizeof(buf),stdin)
而不是
read(stdin\u FILENO,buf,sizeof(buf))
来读取标准输入是否更好

编辑:很抱歉造成混淆。我引用MSDN并不是说
read
不受欢迎,只是为了表明它确实是POSIX标准的一部分(它提到了“POSIX函数”),而不是C标准。

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


另一方面,可能需要在Posix系统上执行一些不可移植的操作,例如使用管道和插座。在这种情况下,继续使用Posix接口。

读取
函数不是标准的C函数,只是Posix函数。如果你想变得便携,你应该改用
fread
(和相关函数)。read(2)是POSIX。就IO而言,ISO C仅处理标准流。如果您想同时实现超级便携性和高效性,可以在
stdin
中禁用缓冲,并使用
fread
。Microsoft在Microsoft平台上不赞成使用
读取
。使用MS作为C的参考是个坏主意。自17年以来,他们拒绝支持C标准。它们还放弃了对POSIX的支持,因此对于POSIX相关问题来说,它们也是一个糟糕的参考。而引文显然来自于一些C++语言,这是一种不同的语言。对于C.@AndrewHenle@yellowantphil@Olaf和其他人来说,这也是一个糟糕的资源,我引用MSDN并不是为了表明
read
被弃用,只是为了表明它确实是POSIX标准的一部分(它提到了“POSIX函数”),而不是C标准。