首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Ruby历程(2) Process创建和回收 --- Process.fork, Process.wait和Process.detach

2013-04-05 
Ruby进程(2) Process创建和回收 --- Process.fork, Process.wait和Process.detach?Process.fork{}?当block

Ruby进程(2) Process创建和回收 --- Process.fork, Process.wait和Process.detach

?

Process.fork{}

?

当block为空的时候,fork会返回2次结果,一次是在父进程中,返回子进程的pid,一次是在子进程中,返回nil。

Creates a subprocess. If a block is specified, that block is run in the subprocess, and the subprocess terminates with a status of zero.?

Otherwise, the fork call returns twice, once in the parent, returning the process ID of the child, and once in the child, returning nil.?

?

# Process.fork 会运行两次,第一次返回子进程pid,第二次返回nilpid = Process.forkputs "current pid :#{pid}"if pid.nil? then  puts "# In child"  puts exec('ls ~')else  puts "# In Parent"  puts "Sub Process ID:#{Process.wait(pid)}"end

?

?Source: http://stackoverflow.com/questions/806267/ruby-how-to-fire-and-forget-a-subprocess

?

Process.wait()

?

当进程退出时会保留一些关于退出状态的信息。这些状态信息并不能清除,直到它被父进程使用Process.wait来使用。

Process.wait(pid) ? Waits for a child process to exit, returns its process id, and sets $? to a Process::Statusobject containing information on that process.

Process.wait(-1) ?Waits for any child process (the default if no pid is given).

?

Process.detach()

?

Process.detach(pid) to register disinterest in their status; otherwise, the operating system may accumulate zombie processes.

?

?

?

热点排行