Ruby Spawn 继承文件句柄。

3

我安装了Mark Rusinovitch的优秀的handle.exe,它可以显示当前打开的文件描述符。

在Ruby中,当我运行它时:

require 'tempfile'
file=Tempfile.new('foxylady')
pid=Process::spawn('calc.exe',:close_others=>true)
Process::detach(pid)
file.close
puts(`handle foxylady`)

我明白了:

E:\WORK\voillequinj_maci>ruby a.rb

Handle v3.51
Copyright (C) 1997-2013 Mark Russinovich
Sysinternals - www.sysinternals.com

calc.exe           pid: 4176   type: File           164: C:\Users\VOILLE~1\AppData\Local\Temp\foxylady20140702-5908-1sn8edi

这让我想到 Process::spawn 没有执行该做的事情。 calc.exe 继承了使用 file=Tempfile.new('foxy lady') 打开的句柄。 我错了吗?有没有什么方法可以避免这种情况?
1个回答

0
你可以控制FDs,查看文档
Process.spawn(command, in: :close, out: :close, err: :close, close_others: true)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接