1
我使用ruby啓動後臺服務。我爲此服務存儲PID以稍後終止。爲了簡單起見,我需要運行後臺服務"sleep 1000"
。我使用這個命令,它可以正常工作Linux在不產生新進程的情況下運行重定向子進程
child_pid = fork {exec("sleep 1000")} # => 7845
ps
7845 pts/15 00:00:00 sleep
child_pid
存儲睡眠PID。但是,當我嘗試將stdout重定向到文件(用於日誌記錄)時,它的行爲有所不同。
child_pid = fork {exec("sleep 1000 > sleep.log")} # => 7829
在這種情況下,child_pid
是SH過程的PID,和睡眠過程需要另一個PID。
ps
7829 pts/15 00:00:00 sh
7832 pts/15 00:00:00 sleep
對此有何解釋?