我知道我可以通过
为stdin输入提供一个StringOpen3.capture3
Open3.capture3 some_cmd, stdin_data: some_string
但是可以像打开文件一样提供类似流的输入吗?
类似
Open3.capture3 some_cmd, in: File.open(filepath)
我知道capture3
将其选项传递给Process.spawn
并且我已阅读
答案 0 :(得分:0)
根据Open3文档,使用popen3
代替capture3
。
请注意,对于您的示例,您可能必须生成一个线程来读取流中的输入并将其重定向到open3提供的输入,具体取决于您的流来自何处。
答案 1 :(得分:0)
我已经在http://ruby-doc.org/core-2.2.0/Process.html#method-c-spawn上的STDIN重定向主题上阅读了这篇文章:
pid = spawn(command, :in=>"/dev/null")
Open3
的文档说您可以使用spawn
定义的属性,因此您应该能够in
和capture*
使用popen3
虽然我已经测试了这个,但也是如此。如果它不起作用,仍然有spawn
。