除了执行外部程序之外,fork()的有用性
Usefulness of fork() besides executing foreign programs
我读到的关于fork()
的教程、手册和其他资源通常只包含使用线程可以更好地解决的示例。他们只是交流,做一些非常基本的任务,然后再次交流以分享或显示结果。我有一种感觉,除非你的意图是启动一个外国程序(让父亲继续,孩子启动那个外国程序),否则线程总是比fork更容易处理、更灵活、更安全。
当fork()
优于仅使用线程时,还有其他应用领域吗?除了一种病毒。
您可以使用fork()
作为一种简单的方法,在不停止原始应用程序的情况下从应用程序生成快照。
由于操作系统将进程的虚拟内存映射为写时拷贝,因此除了发生更改的数据(加上操作系统开销)外,您实际上不需要支付任何成本。
编辑:为了以后的观众,添加了评论中的答案。
一个典型的例子是web服务器(例如Apache)。如果进程崩溃,那么很容易干净地重新启动,而线程则不然。使用单独的进程可以限制单个进程崩溃造成的损害Jerry Coffin
fork()
比各种线程机制早了至少十年。因此,如果您需要移植到V7 UNIX,fork()
是一个更好的选择抢劫ᵩ
fork()
可用于守护进程,同时保持监视器进程的活动状态。–标记B
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 松弛原子与无同步情况下的记忆连贯性
- C++Union/Struct位域的实现和可移植性
- C++boost序列化多态性问题
- 其中降频广播实际上是有用的
- 如何更改唯一指针向量的可见性
- 获取 SFML 窗口的 HWND 和高可用性?
- 当指向对象的指针作为参数传递给 std::thread 时,内存可见性
- 将指向数据成员的指针传递给 std::invoke 时有哪些用例和有用性?
- KeyEqual 在 std::unordered_set/std::unordered_map 中的有用性
- std::make_pair 和 std::make_tuple 在 C++17 中的有用性
- 自C 11以来,挥发性在并发编程中的有用性
- 指向非静态方法的指针的C++有用性
- 除了执行外部程序之外,fork()的有用性
- 'rand()' 的有用性 - 或者谁应该称呼 'srand()'
- 可视化的一个MS扩展到c++的有用性