Ruby 面试题
目录

Ruby 中如何使用 fork 创建子进程?

· 约 2 分钟读完 · 第 141 / 199 章

推荐答案

在 Ruby 中,可以使用 fork 方法来创建子进程。fork 方法会返回两次:一次在父进程中返回子进程的 PID,另一次在子进程中返回 nil。以下是一个简单的示例:

本题详细解读

fork 方法的工作原理

fork 方法会创建一个与当前进程几乎完全相同的子进程。子进程从 fork 调用处开始执行,并且继承了父进程的所有内存、文件描述符等资源。fork 方法在父进程中返回子进程的 PID,而在子进程中返回 nil。

代码解析

  1. 子进程的创建:

    • fork 方法创建了一个子进程,子进程从 fork 调用处开始执行。
    • 在子进程中,fork 返回 nil,因此子进程会执行 fork 块中的代码。
  2. 父进程的执行:

    • 在父进程中,fork 返回子进程的 PID,因此父进程会继续执行 fork 之后的代码。
  3. 等待子进程结束:

    • Process.wait(pid) 用于等待子进程结束。这样可以确保父进程在子进程完成后再继续执行后续代码。

注意事项

  • 资源管理:子进程继承了父进程的所有资源,因此在子进程中需要小心管理资源,避免资源泄漏。
  • 进程同步:如果父进程和子进程需要共享资源或进行通信,可以使用管道、共享内存等机制。
  • 进程终止:子进程在完成任务后应调用 exit 或 exit! 来终止进程,避免僵尸进程的产生。

通过 fork 方法,Ruby 可以轻松地创建子进程,实现并发执行任务的需求。