c++ - 使用 C++ 进行 Linux 编程

标签 c++ linux

我刚刚读完 Accelerated C++,所以我对 C++ 还很陌生,但我想学习 Unix/Linux 编程(如命令行应用程序和守护进程)。我看到每个人都推荐《Unix 环境中的高级编程》,但它似乎是面向 C 的。我知道 C++ 是从 C 中提取的,因此我可以在我的 C++ 项目中使用书中的每个函数,但例如 - 当涉及打开文件时:我应该使用 中的 open() (如书中所述),还是使用 中的 open() ?书中的其他功能也是如此。因此,问题是当还有“对应/匹配”的 C++ 函数时是否以及何时使用 POSIX C 函数。

最佳答案

Unix API 是 C 语言(Windows API 也是如此);任何对 Unix 的调用都会看起来 就像 C 一样。但是,这并不能阻止您使用 C++:如果该函数 需要一个 char const*,例如,您可以调用 std::string::c_str() 上的 std::string

无论您想要 Unix 函数(例如 read())还是 C++(>>) 流)取决于您的需要。 C++ 功能通常位于 更高的水平; read() 只会读取字节数组,例如, 并且不会解析文本格式的整数。另一方面,你 使用 read() 及其组合进行更多低级控制 功能;例如,如果您需要事务完整性,则需要 使用 open(),向其传递适当的标志,但该标志不可用 在 std::fstream::open() 中。更一般地说,C++ 函数 涉及与外部(或与其他线程)的交互的构建 底层 Unix 系统调用。他们提供了更高水平的 抽象,通常使用起来更简单,但在具体情况下 在这种情况下,它们可能无法提供较低级别可用的所有功能。

关于c++ - 使用 C++ 进行 Linux 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837631/

相关文章:

c++ - 我的 CListCtrl 中的选定项目显示省略号,尽管有足够的空间!

c++ - 开关的替代品

C++:什么是 Mat3f?

xml - 如何比较 10 个大的 XML 文件?

C 信号处理错误,发出子父联系

c++ - if/switch 中的声明

linux - 在处理 init 之前强制加载 Linux 内核

linux - 带有 fftwf_plan_dft_r2c_1d 的库?

python - TensorFlow 从源错误 ValueError : invalid literal for int() with base 10: '' during cuda path configuration? 构建

java - java this的C++版本。在类里面