我通过FFI在Ruby中访问C函数。该函数名为AllocTilts::summary
。
我希望该方法不要向STDOUT打印任何内容。然而,我的临时STDOUT重定向不起作用。是否还有其他解决办法?
puts 'test outside before' #prints successfully
File.open("/var/alloc_tilts/summary_dump", "w") do |out|
stdout, $stdout = $stdout, out
puts 'test inside' #doesn't print to STDOUT as expected
AllocTilts.summary(2012, 2011) #prints undesired stuff to STDOUT
$stdout = stdout
end
puts 'test outside after' #prints successfully
dup
吗? - Translunardup
命令将标准输出重定向到你创建的另一个文件描述符,然后从新文件描述符重定向到Ruby的$stdout
。你可以在https://dev59.com/D3E85IYBdhLWcg3wzW3M阅读关于`dup`和标准输出重定向的更多信息。 - gioele