Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
Winapi _open()能否返回有效的负fd?_Winapi_Visual C++ - Fatal编程技术网

Winapi _open()能否返回有效的负fd?

Winapi _open()能否返回有效的负fd?,winapi,visual-c++,Winapi,Visual C++,win32的\u open()是否可能返回负的有效FD 换句话说,就是比较 if( (fd=_open(...)) < 0) error...; ? 我这样问是因为所有msdn示例 如果(fd==-1),则格式为,如果(fd

win32的
\u open()
是否可能返回负的有效FD

换句话说,就是比较

 if( (fd=_open(...)) < 0) error...;
?

我这样问是因为所有msdn示例

如果(fd==-1),则格式为
,如果(fd<0)
,则从不格式为
。负值都是错误。事实上,如果查看read(),它会断言fd介于0和31之间。

Windows文件描述符是从MS-DOS 2.0文件句柄借用来的,该文件句柄松散地基于Unix文件描述符,所有这些文件描述符都是进程文件控制块表的索引。因此,有效的文件句柄必须是非负的。

另一方面,对于Windows代码,我建议使用CreateFile()而不是_open(),后者主要是为了与其他平台兼容。CreateFile返回的句柄是进程内核对象表的索引。VCs _open返回的FD是msv c-runtime维护的表的索引。在MSC中,存在额外的间接级别,即文件描述符是包含系统文件句柄的(进程特定)库表的索引。
 if( (fd=_open(...)) == -1) error...;