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