2012-08-16 101 views

回答

25

@ TanzeebKhalili的答案的作品,但你可以考虑Kernel.spawn(),不等待处理返回:根据文档

pid = spawn("./test.sh") 
Process.detach(pid) 

需要注意的是,无论你用spawn()或手动fork()system() ,您应该在退出之前获取PID和Process.detach()Process.wait()

关于重定向标准错误和输出,这很容易与spawn()

pid = spawn("./test.sh", :out => "test.out", :err => "test.err") 
Process.detach(pid) 
+0

尼斯,也能在窗口!有多个进程写入test.out一些行会出现乱码 – peter 2012-08-16 12:26:20

+0

@peter是的,对多个进程同时进行缓冲写入同一文件确实会造成一些线路。这个问题有很多解决方案,但最简单的方法就是写入每个进程的单独文件。否则,你可能需要一个单独的进程来复用输出。 – 2012-08-16 13:18:15

8

试试这个:

Process.fork { system "./test.sh" } 

将无法​​在Windows中,您可以使用线程工作。