问题标签 [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 投票
3 回答
8637 浏览

ruby - 如何修复在 Ruby 中挂起的 popen3?

我在使用 popen3 时遇到了意外的行为,我想用它来运行类似 tool ala 的命令cmd < file1 > file2。下面的示例挂起,因此stdout done永远无法达到。使用其他工具cat可能会导致悬挂,因此stdin done永远无法达到。我怀疑,我正在遭受缓冲,但我该如何解决这个问题?

0 投票
0 回答
1043 浏览

ruby - 在 Windows 上使用 Ruby 的 popen3 或等效的

我正在制作一个Open3.popen3用于运行 shell 命令的 Vim 插件,我需要结果和退出代码。它在 Linux 上运行良好,但在 Windows 上冻结。我已经pry在 Windows 下进行了检查,每当我运行Open3.popen3Process.spawnshell 冻结时。我已经尝试安装win32-open3-19gem(并使用 加载它require 'win32/open3) - 但它仍然冻结。

我可以使用其他任何方法或宝石吗?我更喜欢尽可能接近的东西Open3(这样我的 Linux 和 Windows 版本可以共享尽可能多的代码)。

我正在运行通过 RubyInstaller 在 Windows 7 64 位上安装的 Ruby 1.9.3。

更多详情

这是我要运行的确切代码:https ://github.com/someboddy/vim-erroneous/blob/master/autoload/erroneous.rb#L43

它适用于 Linux,但在 Windows 上冻结。

在我的 Windows 上,我打开pry然后写:

我的壳结冰了。当我在 Linux 上尝试它时(使用 'bash' 而不是 'cmd')它工作得很好。我也试过'dir'(不应该等待用户输入),它也冻结了。

0 投票
3 回答
12007 浏览

ruby - 如何从 ruby​​ Open3.popen3() 中检索退出状态?

我似乎被困在试图检索从 ruby​​ 的 Open3.popen3() 方法启动的 shell 命令的退出状态。

这是我的代码:

当我现在尝试访问它时$?,它仍然是nil

毕竟有可能检索退出状态吗?

注意:
-ls不是我试图在我的脚本中使用的命令。我只是用这个来举个例子。我的脚本有点复杂,并且包含用户输入,这就是为什么我需要 Open3 的清理功能。
- 我也尝试过 popen3 的 block 变体,但也没有成功。

0 投票
3 回答
2762 浏览

python - Python 等价于 find -exec

我正在尝试在 Popen 中运行此 BASH 命令:

但是每次我在标准错误中得到:“find: missing argument to `-exec'\n”。

与此等效的 python 是什么?

我天真的方法是:

肯定有更好,更蟒蛇的方式来做到这一点?

0 投票
2 回答
5430 浏览

ruby - 编写openssl脚本以生成许多证书而无需手动输入密码?

我创建了一个证书颁发机构,需要生成和签署 50 多个证书。我想编写这个过程的脚本。我不想手动输入密码 100 多次!

这是我挂断的命令:

问题是,它希望我使用以下提示创建密码:

当我只是被要求输入密码时,我可以使用-passin pass:mypass命令行选项openssl。但这似乎不适用于创建密码。

此外,当后来我最终删除它时需要密码似乎很奇怪:

我尝试创建一个简单的 Ruby 脚本:

但这似乎也不起作用。我仍然会收到手动提示,要求我创建密码。

0 投票
1 回答
202 浏览

ruby-on-rails - Ruby on Rails 调用 perl 脚本超时

我正在编写一个使用 Open3 调用 perl 脚本的 Ruby on Rails 应用程序。但是,当调用 perl 脚本时,我的应用程序会比我想要的更快地引发 Timeout::Error。我调用脚本的代码如下所示:

我意识到调用一个潜在的“长时间”运行脚本(可能是 20-30 秒)对于 ruby​​ on rails 应用程序来说并不理想,但我没有太多选择。

我正在使用独角兽来获得并发性,并且我将独角兽超时设置为 60 秒。尽管我的 unicorn 文件中有 60 秒超时,并且 Open3 调用周围有 120 秒超时,但我的请求仍然在 18 秒左右超时。我知道脚本已成功完成,因为我在另一边看到了结果,但我需要我的应用程序等待脚本返回。

有没有其他方法可以强制我的 Rails 应用程序等待而不是超时?

谢谢!

从捕获的错误回溯:

0 投票
3 回答
2528 浏览

lua - 在 lua io.popen 中使用 stderr 来确定错误的函数调用

我正在制作一个函数,可以读取在 Spotify 中播放的当前歌曲的元数据。这是在 lua 中编程的,因为它是一个很棒的 wm 的实现。我得到以下行来获取我以后可以使用的所有元数据。

但是,当 Spotify 未运行时,我没有得到预期的信息,并且 qdbus 将错误写入 stderr 流。我想利用 qdbus 写入错误流的事实来确定故障并在那里停止程序。(这也应该捕获与 spotify 是否正在运行无关的任何其他错误)

我的理解是lua popen使用popen3可以细分stdout和stderr。但到目前为止我所有的努力都没有结果,我的错误流总是空的。是否可以检查 stderr 中的非 nil 值以确定对 qdbus(或 awk)的错误调用?

谢谢!

0 投票
2 回答
4535 浏览

ruby - Ruby Open3.popen3 模拟用户输入

我正在尝试运行@command需要用户输入的 bash 脚本 ( ),并且我正在尝试使用以下代码提供该脚本输入:

这是脚本的一个想法:

如果有人能告诉我我做错了什么,或者对如何以不同的方式实现这一点有任何建议,那将不胜感激。


另外,我可以像这样运行脚本:

在这种情况下,我可以在运行我的应用程序的控制台中看到脚本输出的内容。如果无论如何要向该位置提供输入,那也可以。

0 投票
1 回答
98 浏览

ruby - 打开可执行文件并管理其流?

我正在尝试打开一个 Ruby 脚本,该脚本会提示输入popen3, 用于测试目的。

我需要能够输入进程的 STDIN 并检查输出。到目前为止,我有这个:

已经尝试了几天,我的大脑正在融化。

0 投票
1 回答
516 浏览

ruby - 为什么Ruby的popen3因为“打开的文件太多”而崩溃?

我正在使用 Popen3 运行一些 Perl 脚本,然后将它们的输出转储到文本文件中。在文本文件中,我搜索 Perl 脚本的结果。运行大约 40 分钟后出现错误,大约 220 个文件。

脚本如下。

这个脚本正在处理 4900 个 Perl 文件,所以我不知道这是否是太多的文件,popen3或者我没有正确使用它。

谢谢你帮助我!

在一些非常有用的指示之后,我重构了我的脚本!代码运行良好!