_fork -> IntegerRuby 3.1 から[permalink][rdoc][edit]-
fork のための内部 API です。このメソッドを直接呼び出してはいけません。
Kernel.#fork、Process.fork、IO.popen に "-" を渡した場合に、その内部から呼び出されます。
通常のプログラムのためではなく、アプリケーションを監視するライブラリのために用意されています。このメソッドを上書きすると、fork の前後に独自の処理を挟めます。
Process.#daemon も fork(2) を用いて実装されることがありますが、そちらはこのメソッドを経由しません。fork を捕捉する目的によっては、 Process.#daemon も併せて上書きする必要があります。
- [RETURN]
- 子プロセスでは 0 を、親プロセスでは生成した子プロセスのプロセス ID を返します。
module ForkMonitor def _fork pid = super if pid.zero? puts "子プロセスです" else puts "親プロセスです。子は #{pid} です" end pid end end Process.singleton_class.prepend(ForkMonitor) pid = fork { exit } Process.waitpid(pid) # => 子プロセスです # 親プロセスです。子は 70024 です[SEE_ALSO] Process.fork, Kernel.#fork, Process.#daemon