首页 >后端开发 >C++ >C fstream 可以从 POSIX 文件描述符构造吗?

C fstream 可以从 POSIX 文件描述符构造吗?

Linda Hamilton
Linda Hamilton原创
2024-12-14 20:08:19553浏览

Can a C   fstream be Constructed from a POSIX File Descriptor?

如何从 POSIX 文件描述符构造 C fstream?

理解困境

从 POSIX 文件描述符构建 C fstream 看起来很简单,但它事实证明这是一个复杂的挑战。问题出现了:这种简单的认识是一种误解还是一个真正复杂的过程?

可能的解决方案和注意事项

1。非标准库扩展:

根据 Éric Malenfant 接受的答案,在标准 C 中可能无法通过 fstream 访问 POSIX 文件描述符。但是,标准库的特定实现(例如 libstdc )可能会提供允许此功能的非标准扩展。例如,libstdc 提供了一个 fstream 构造函数,它接受文件描述符作为输入。

2.使用非标准文件处理的自定义解决方案:

或者,可以实施自定义解决方案。对于 libstdc ,可以使用 __gnu_cxx::stdio_filebuf 类模板。该模板继承自 std::basic_streambuf 并拥有一个将文件流缓冲区与打开的 POSIX 文件描述符关联起来的构造函数。然后可以将此缓冲区分配给 istream 对象,以方便对文件进行操作。

3. Microsoft Visual C 实现:

Microsoft Visual C 为接受 FILE 参数的 ifstream 提供非标准构造函数。尽管此构造函数未记录,但它可以从使用“_fdopen”获得的 C 流创建 ifstream 对象,以将 POSIX 文件句柄转换为 FILE

结论:

从 POSIX 文件描述符构造 C fstream 是可行的,但有一些注意事项。标准库中缺乏明确的支持,因此需要使用非标准扩展或自定义解决方案。最合适的方法取决于所使用的特定平台和编译器。

以上是C fstream 可以从 POSIX 文件描述符构造吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn