问题标签 [popen3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
57 浏览

ruby - 从 ruby​​ 运行 bash 脚本不会产生正确的 pid

我正在开发一个 ruby​​ 框架来运行不同的作业,我需要做的一件事是知道这些作业何时结束,以便使用它们的输出并组织所有内容。我一直在毫无问题地使用它,但是一些同事开始在不同的系统中使用它,并且发生了一些非常奇怪的事情。我所做的是使用运行命令

后来我检查工作是否像这样结束:

它在我正在运行的系统(Scientifi linux 6)中完美运行,但是当我的一个朋友开始在 Ubuntu 14.04 上运行(使用 ruby​​ 1.9.3p484)并且命令是命令的串联,例如cmd1 && cmd2 && cmd3每个命令同时运行由系统,不是一个接一个,返回的pidt.pid既不是正在运行的不同进程的pid。

我修改了代码,而不是运行 cammands 的串联,而是创建了一个脚本,其中包含从 popen3 调用的命令中的所有命令,Open3.popen3("./script.sh")但行为是相同的......所有命令同时运行并且 pid ruby 知道不是任何进程 pid...

我不确定这是否与 ruby​​ 相关,但由于script.sh手动运行它的行为符合预期,一个接一个地运行一个命令,似乎 ruby​​ 没有相应地启动进程,或者系统没有按应有的方式读取进程。你知道可能会发生什么吗?

非常感谢!

编辑:正在运行的命令如下所示 ./myFit.exe h vlq.config &> output_h.txt && ./myFit.exe d vlq.config &> output_d.txt && ./myFit.exe p vlq.config &> output_p.txt

这个命令,如果手动运行而不是在 ruby​​ 脚本内运行完美,正是这个命令。从 ruby​​ 脚本运行时,它会同时运行所有 myFit.exe 执行(但我希望它们与 h && 一起运行,因为如果前面的工作正常,我希望它们运行)。Myfit.exe 是一个适合的工具,不是系统命令。同样,如果手动运行此命令,则运行完美。

0 投票
0 回答
175 浏览

ruby - Open3.capture3 挂起,没有任何输出

我有一些像这样的代码在撬:

它在命令行中使用多链。虽然上面的效果很好,但下一部分不起作用:

我等了很长时间,但它永远不会返回任何东西,直到我用 ctrl-C 打断它。 multichaind -daemon不等待任何其他输入。

当我从 bash 运行 multichaind 时,我得到下一个输出:

并退出。有谁知道为什么 capture3 挂起?谢谢,

编辑:铁皮人告诉我这个问题是关于不关闭标准输入,但我相信会Open3.capture3自动关闭标准输入。在我完成之后Open3.popen3,问题出在 STDOUT 上。有人能告诉我更多吗?谢谢

0 投票
1 回答
181 浏览

python - Python 代码到 Perl

我有一段python代码,我需要将它转换为perl,但不幸的是我不擅长perl,如果问题很简单,很抱歉。我想检查 STDOUT 和 STDERR 的特定单词。这是python代码:

我阅读了一些文档,open3 函数可能在这里工作,但对于 p.poll() 部分,我不确定该使用什么。

0 投票
0 回答
114 浏览

ruby - 如何在 Ruby 中使用 Open3.popen2e 接受输入

我用 Ruby 制作了一个包装器,它做了很多事情,设置环境变量,然后使用 Open3 库执行外部程序,将参数(和 ENV)传递给外部进程。

一切运行良好,我从外部进程获得实时输出。但是,有时外部程序会要求输入。我现有的代码不适应这一点,提供输入似乎不起作用。

这是运行外部程序的函数options

我怎样才能让它接受标准输入?

0 投票
3 回答
1343 浏览

ruby - Open3.popen3 在 Windows 上返回错误错误 Errno::ENOENT

我在 test.rb 中有以下代码:

bar.exe是我创建的一个控制台应用程序,位于C:\Program Files\foo\. 当我运行时bar.exe

  • 它输出"Hello world!"
  • 使用任何参数,例如bar.exe /blah,它会输出帮助消息。

当我运行时,ruby test.rb我收到此错误:

如果我将代码更改为调用popen3

我没有收到Errno::ENOENT错误,而是收到帮助消息,但我想要"Hello World"输出。

我搜索了一个解决方案,但没有任何效果,包括“为什么 Open3.popen3 在可执行文件丢失时返回错误错误? ”的答案。

为什么我会收到此错误,我该如何解决?

0 投票
1 回答
333 浏览

ruby - Ruby - Open3 popen3 函数已清理

想使用 Open3 的 popen3 函数在 ruby​​ 上运行系统命令。它会是这样的:

由于文件名将由参数传递,我想对其进行清理。如果运行,例如:

代码工作正常,但是当我尝试分离参数时(因为函数表明它会被转义),类似于:

它给了我错误:没有这样的文件或目录 - pdf2htmlEX --zoom 1.3

有谁知道我如何解决它?谢谢!

0 投票
1 回答
101 浏览

ruby-on-rails - 如何配置 ruby​​mine 以与 open3 一起使用?

问题

我在 rails 应用程序中使用xray-rails gem,并希望它在我在浏览器中单击它时将 ruby​​mine 打开到正确的文件。目前还不清楚如何配置它。xray-rails gem 使用 open3 在编辑器中打开文件。

0 投票
2 回答
561 浏览

cucumber - 如何从 Cucumber::CLI::Main.execute 获取输出(STDOUT)到变量中

在 Jruby 9.1.7.0 中运行黄瓜脚本。输出到 STDOUT。我怎样才能把它保存到局部变量中?

0 投票
1 回答
386 浏览

perl - Perl:让open3继承STDIN、STDOUT、STDERR

这打印 1..10 两次:

我想使用 IPC::Open3 做同样的事情,但我无法让它工作:

0 投票
1 回答
1124 浏览

ruby - ruby open3 stdout和stdin如何交互

sum.rb很简单。您输入两个数字,它会返回总和。

robot.rb用来Open3.popen3交互sum.rb。这是代码:

robot.rb未能运行。似乎它卡在了sum.rb's gets.chomp

后来我发现我必须写如下才能使它工作。您需要事先以正确的顺序输入输入。

让我感到困惑的是:

  1. robot_2.rb不像与 shell 交互,它更像是提供 shell 需要的东西,因为我只知道。如果一个程序需要很多输入而我们无法预测顺序怎么办?

  2. 我发现如果STDOUT.flush在每个putsin之后添加sum.rbrobot.rb可以运行。但实际上我们不能相信sum.rb作者可以添加STDOUT.flush,对吗?

谢谢你的时间!