推荐答案
在 Ruby 中,可以使用 fork 方法来创建进程。fork 方法会创建一个子进程,子进程是父进程的副本。子进程从 fork 调用处开始执行,父进程和子进程可以并行运行。
// www.javascriptcn.com code example
pid = fork do
# 子进程的代码
puts "这是子进程,PID: #{Process.pid}"
end
# 父进程的代码
puts "这是父进程,PID: #{Process.pid}, 子进程的PID: #{pid}"
# 等待子进程结束
Process.wait(pid)本题详细解读
fork 方法
fork 是 Ruby 中用于创建进程的核心方法。调用 fork 时,操作系统会复制当前进程(父进程)的所有资源,创建一个新的进程(子进程)。子进程从 fork 调用处开始执行,父进程和子进程可以并行运行。
- 如果
fork成功,父进程会返回子进程的 PID(进程 ID),而子进程会返回nil。 - 如果
fork失败,通常是因为系统资源不足,fork会抛出异常。
Process.wait 方法
Process.wait 方法用于等待子进程结束。它会阻塞父进程,直到指定的子进程结束。如果不指定子进程的 PID,Process.wait 会等待任意一个子进程结束。
示例代码解析
fork方法创建了一个子进程,子进程执行fork块中的代码。- 父进程继续执行
fork之后的代码,打印出父进程的 PID 和子进程的 PID。 Process.wait(pid)确保父进程等待子进程结束后再继续执行。
其他创建进程的方式
除了 fork,Ruby 还提供了其他创建进程的方式,例如:
spawn:创建一个新的进程并执行指定的命令。system:在子进程中执行命令,并等待命令执行完成。exec:替换当前进程为指定的命令。
这些方法各有不同的用途,可以根据具体需求选择合适的方式。