puts "Process #{Process.pid} started"
return_value = fork
puts "Process #{Process.pid} returned #{return_value}"
puts "Process #{Process.pid} exited"
以上紅寶石代碼印刷這個輸出STDOUT子進程返回nil爲叉呼叫
Process 6644 started
Process 6644 returned 6645
Process 6644 exited
Process 6645 returned
Process 6645 exited
當父進程執行fork
,它返回子進程的PID。當子進程調用fork
爲什麼它返回nil
,這不應該是遞歸類型的調用嗎?就像..孩子也會分叉另一個孩子的過程..而那個孩子的過程會分叉另一個過程..等等,我在這裏錯過了什麼嗎?
如果我不使用_block_語法叉像是從問題的代碼,可我說,子進程只會在「fork」之後執行代碼,這就是子進程沒有執行「puts」的原因。Process#{Process.pid}啓動了「'? – JustForTest