我正在阅读Linux 编程接口(interface) 和Linux 编程示例。这两本书都是非常好的书,很好地解释了 Linux API。但我经常发现自己在想,在现实世界的项目中,我更喜欢 C++ 标准库、Boost 或其他一些好的 C++ 库(有许多编写良好且可移植的 C++ 库),而不是 C API。这自然会带来一个问题——当良好的 C++ 编译器和库(Boost、TBB 等)在目标平台上可用时,为什么我需要直接使用 Linux API?我想 Windows API 也可以这样说,但我对 Windows 系统编程了解不多。
最佳答案
这对 C++ 来说并不陌生。在C中,已经有两种打开文件很久很久的方法:
// Only on POSIX
int fdes = open("file.txt", O_RDONLY);
或者:
// Any hosted C environment, POSIX or otherwise
FILE *fp = fopen("file.txt", "rb");
那么为什么会有人使用 POSIX 特定版本呢?答案很简单——有大量系统调用使用 POSIX 文件描述符。例如,选择
。您还可以制作文件以外的东西,例如管道和套接字,并且可以将它们传递给其他进程。使用 POSIX 文件描述符有着悠久的传统,我们有大量关于如何使用它们进行网络编程的书籍和引用资料。
所以权衡是在便携版和强大版之间。一直都是。
另一半是当您在 Linux 上处理文件时,您正在使用 POSIX 接口(interface)。图书馆只是对你隐藏它。 Boost 使用它,C 运行时使用它,JRE 使用它,GHC 使用它。许多(大多数?)语言运行时是用 C 编写的,首选直接访问系统调用。
关于c++ - C++ 是否弃用了 Linux API 的某些部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063091/