【发布时间】:2012-09-30 02:41:53
【问题描述】:
在我的计算机科学课程中,我们被教导在 C 中使用子进程、分叉、管道和文件描述符等,但我们从未在 C++ 中做过类似的事情。
您是否使用相同的库,或者 C++ 是否有自己的一些(希望是简化的)系统库?
【问题讨论】:
标签: c++ c system-calls
在我的计算机科学课程中,我们被教导在 C 中使用子进程、分叉、管道和文件描述符等,但我们从未在 C++ 中做过类似的事情。
您是否使用相同的库,或者 C++ 是否有自己的一些(希望是简化的)系统库?
【问题讨论】:
标签: c++ c system-calls
您所描述的事物类型实际上是系统特定的,而不是 C 特定的。如果您环顾四周,您可能会找到一些它们的包装器,但它们不是 C++ 标准(也不是 C 标准)的一部分。
例如,没有理由在标准 C 中使用文件描述符。这就是文件结构、fopen、fclose、fread、fwrite 等的用途。如果您使用的是文件描述符,那是因为您学习的是操作系统而不是 C。
【讨论】:
分叉、管道、执行;父进程,子进程:您在谈论 POSIX。 POSIX 标准是用 C 而不是 C++ 编写的。除了少数例外,POSIX 库函数要么与 C 标准一致,要么对其进行扩充。您可以从 C++ 调用 C 函数,因此在符合 POSIX 的 C/C++ 系统上也可以使用相同的功能。但是,重点是 C 而不是 C++,因为 C++ 是库函数的原生语言,例如 fork、exec 系列函数等等。
C++11 采用了来自 POSIX 和 Windows 的线程概念,但重量级的多处理东西,如 fork 和 exec、管道等:这是基于 C 的。
【讨论】:
没有什么特定于 C 或 C++ w.r.t 进程、子进程等。在 C 中编程时可用的内容应该可用于 C++。您始终可以使用可设计用于面向对象风格和 RAII 优势的包装类。
【讨论】: