问题标签 [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.
ruby - 如何修复在 Ruby 中挂起的 popen3?
我在使用 popen3 时遇到了意外的行为,我想用它来运行类似 tool ala 的命令cmd < file1 > file2
。下面的示例挂起,因此stdout done
永远无法达到。使用其他工具cat
可能会导致悬挂,因此stdin done
永远无法达到。我怀疑,我正在遭受缓冲,但我该如何解决这个问题?
ruby - 在 Windows 上使用 Ruby 的 popen3 或等效的
我正在制作一个Open3.popen3
用于运行 shell 命令的 Vim 插件,我需要结果和退出代码。它在 Linux 上运行良好,但在 Windows 上冻结。我已经pry
在 Windows 下进行了检查,每当我运行Open3.popen3
或Process.spawn
shell 冻结时。我已经尝试安装win32-open3-19
gem(并使用 加载它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'(不应该等待用户输入),它也冻结了。
ruby - 如何从 ruby Open3.popen3() 中检索退出状态?
我似乎被困在试图检索从 ruby 的 Open3.popen3() 方法启动的 shell 命令的退出状态。
这是我的代码:
当我现在尝试访问它时$?
,它仍然是nil
毕竟有可能检索退出状态吗?
注意:
-ls
不是我试图在我的脚本中使用的命令。我只是用这个来举个例子。我的脚本有点复杂,并且包含用户输入,这就是为什么我需要 Open3 的清理功能。
- 我也尝试过 popen3 的 block 变体,但也没有成功。
python - Python 等价于 find -exec
我正在尝试在 Popen 中运行此 BASH 命令:
但是每次我在标准错误中得到:“find: missing argument to `-exec'\n”。
与此等效的 python 是什么?
我天真的方法是:
肯定有更好,更蟒蛇的方式来做到这一点?
ruby - 编写openssl脚本以生成许多证书而无需手动输入密码?
我创建了一个证书颁发机构,需要生成和签署 50 多个证书。我想编写这个过程的脚本。我不想手动输入密码 100 多次!
这是我挂断的命令:
问题是,它希望我使用以下提示创建密码:
当我只是被要求输入密码时,我可以使用-passin pass:mypass
命令行选项openssl
。但这似乎不适用于创建密码。
此外,当后来我最终删除它时需要密码似乎很奇怪:
我尝试创建一个简单的 Ruby 脚本:
但这似乎也不起作用。我仍然会收到手动提示,要求我创建密码。
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 应用程序等待而不是超时?
谢谢!
从捕获的错误回溯:
lua - 在 lua io.popen 中使用 stderr 来确定错误的函数调用
我正在制作一个函数,可以读取在 Spotify 中播放的当前歌曲的元数据。这是在 lua 中编程的,因为它是一个很棒的 wm 的实现。我得到以下行来获取我以后可以使用的所有元数据。
但是,当 Spotify 未运行时,我没有得到预期的信息,并且 qdbus 将错误写入 stderr 流。我想利用 qdbus 写入错误流的事实来确定故障并在那里停止程序。(这也应该捕获与 spotify 是否正在运行无关的任何其他错误)
我的理解是lua popen使用popen3可以细分stdout和stderr。但到目前为止我所有的努力都没有结果,我的错误流总是空的。是否可以检查 stderr 中的非 nil 值以确定对 qdbus(或 awk)的错误调用?
谢谢!
ruby - Ruby Open3.popen3 模拟用户输入
我正在尝试运行@command
需要用户输入的 bash 脚本 ( ),并且我正在尝试使用以下代码提供该脚本输入:
这是脚本的一个想法:
如果有人能告诉我我做错了什么,或者对如何以不同的方式实现这一点有任何建议,那将不胜感激。
另外,我可以像这样运行脚本:
在这种情况下,我可以在运行我的应用程序的控制台中看到脚本输出的内容。如果无论如何要向该位置提供输入,那也可以。
ruby - 打开可执行文件并管理其流?
我正在尝试打开一个 Ruby 脚本,该脚本会提示输入popen3
, 用于测试目的。
我需要能够输入进程的 STDIN 并检查输出。到目前为止,我有这个:
已经尝试了几天,我的大脑正在融化。
ruby - 为什么Ruby的popen3因为“打开的文件太多”而崩溃?
我正在使用 Popen3 运行一些 Perl 脚本,然后将它们的输出转储到文本文件中。在文本文件中,我搜索 Perl 脚本的结果。运行大约 40 分钟后出现错误,大约 220 个文件。
脚本如下。
这个脚本正在处理 4900 个 Perl 文件,所以我不知道这是否是太多的文件,popen3
或者我没有正确使用它。
谢谢你帮助我!
在一些非常有用的指示之后,我重构了我的脚本!代码运行良好!