ruby Process.spawn中的“错误的第一个参数”异常

pbpqsu0x  于 2023-05-06  发布在  Ruby
关注(0)|答案(1)|浏览(134)

我正在尝试产生一个这样的过程

# name I get from network (I'm using webrick)
Process.spawn(name)

不管我最后得到了什么

ArgumentError: wrong first argument

但有点奇怪。当我在Process.spawn调用之前使用binding.pry中断时,得到的结果如下:

> name
=> "notepad.exe"
> name == "notepad.exe"
=> true
> Process.spawn(name)
ArgumentError: wrong first argument
from (pry):23: in `spawn`
> Process.spawn("notepad.exe")
=> 728
> Process.spawn(name.to_s)
=> 1416

所以我只是验证了name等于"notepad.exe",并且当用name调用时Process.spawn失败,当用"notepad.exe"调用时成功。它在使用name.to_s调用时也可以工作。谁能告诉我这是怎么回事?
name"notepad.exe"都有UTF-8编码(通过name.encoding验证),namename.to_s都不是tainted?
我看了源代码,但不知道发生了什么。

eanckbw9

eanckbw91#

问题是WEBrick::HTTPUtils::FormData定义了#to_ary。所以我用name.to_s来解决这个问题。

相关问题