Ruby 面试题
目录

Ruby 中如何创建进程?

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

推荐答案

在 Ruby 中,可以使用 fork 方法来创建进程。fork 方法会创建一个子进程,子进程是父进程的副本。子进程从 fork 调用处开始执行,父进程和子进程可以并行运行。

本题详细解读

fork 方法

fork 是 Ruby 中用于创建进程的核心方法。调用 fork 时,操作系统会复制当前进程(父进程)的所有资源,创建一个新的进程(子进程)。子进程从 fork 调用处开始执行,父进程和子进程可以并行运行。

  • 如果 fork 成功,父进程会返回子进程的 PID(进程 ID),而子进程会返回 nil。
  • 如果 fork 失败,通常是因为系统资源不足,fork 会抛出异常。

Process.wait 方法

Process.wait 方法用于等待子进程结束。它会阻塞父进程,直到指定的子进程结束。如果不指定子进程的 PID,Process.wait 会等待任意一个子进程结束。

示例代码解析

  1. fork 方法创建了一个子进程,子进程执行 fork 块中的代码。
  2. 父进程继续执行 fork 之后的代码,打印出父进程的 PID 和子进程的 PID。
  3. Process.wait(pid) 确保父进程等待子进程结束后再继续执行。

其他创建进程的方式

除了 fork,Ruby 还提供了其他创建进程的方式,例如:

  • spawn:创建一个新的进程并执行指定的命令。
  • system:在子进程中执行命令,并等待命令执行完成。
  • exec:替换当前进程为指定的命令。

这些方法各有不同的用途,可以根据具体需求选择合适的方式。