popen3

    3熱度

    3回答

    我正在使用守護進程工具包啓動後臺ruby進程,用於監聽Amazon SQS消息。一旦接收到消息,它就會啓動一個需要在JRuby中運行的Open3.popen3的子進程。 後臺進程需要在MRI中運行,因爲守護進程工具包使用Process.daemon來守護進程。但到目前爲止,我還無法強制子進程在JRuby中運行。 我使用rbenv管理紅寶石版本,所以起初我以爲這會工作: Open3.popen3({

    3熱度

    1回答

    我正在圍繞CLI製作一個Ruby包裝器。我發現了一個簡潔的方法,Open3.capture3(它在內部使用Open3.popen3),它可以讓我執行命令並捕獲標準輸出,標準錯誤和退出代碼。 我想檢測的一件事是如果沒有找到CLI可執行文件(併爲此提出特殊錯誤)。我知道當UNIX命令找不到時,UNIX shell提供退出碼127。 而當我在bash中執行$ foo時,我得到-bash: foo: co

    0熱度

    1回答

    我正在使用rspec在Ruby中開發一些測試用例。 我試圖模擬popen3函數。 然而,同時仍保持封閉形式,我無法捕捉到預期的輸出信息: Class MyClass def execute_command Open3.popen3(command) do |stdin, stdout, stderr, wait_thr| output['wait_thr'] = w

    3熱度

    2回答

    目標:我正在用ruby編寫一個工作流命令行程序,它依次執行UNIX shell上的其他程序,其中一些需要用戶輸入輸入。 問題:雖然我可以成功Nick Charlton處理stdout和stderr感謝這個有用blog post,不過,我被困在捕捉用戶輸入,並將其傳遞到子過程通過命令行。的代碼如下: 方法 module CMD def run(cmd, &block) Open3

    2熱度

    1回答

    我已經使用下面的代碼來發送電子郵件,如同類似主題的帖子之一中建議的。但郵件尚未發送。有什麼建議麼? import subprocess recipient = '[email protected]' subject = 'test' body = 'testing mail through python' def send_message(recipient, subject, body)

    4熱度

    1回答

    我使用一個命令行程序調用過程中,它的工作原理如下所述: $ ROUTE_TO_FOLDER/app < "long text" 如果「長文本」使用參數「應用程序」寫需要,那麼它將填充結果的文本文件。如果不是,它會連續填充文本文件(我不能處理或修改「應用程序」的代碼,以避免這種情況)。 在Ruby腳本中有這樣一行:現在 text = "long text that will be used by

    3熱度

    1回答

    我試圖從ruby運行git add -p。問題是這個命令顯示了部分文件並等待用戶輸入,可能會打開git編輯器。由於這個原因,執行系統命令的常規內核方法將不起作用。我試圖用open3這裏是我走到這一步: require "open3" Open3.popen3("\git add -p #{files_to_add.join(" ")}") do |stdin, stdout, stderr, w

    8熱度

    1回答

    我正在使用Open3的popen3方法來啓動一個以控制檯/ REPL方式運行的進程,以重複接受輸入和返回輸出。 我能夠打開的過程中,輸入發送和接收輸出就好了,有這樣的代碼: Open3.popen3("console_REPL_process") do |stdin, stdout, stderr, wait_thr| stdin.puts "a string of input"

    0熱度

    2回答

    我有運行在Windows Ruby程序它調用一個外殼命令(這是衆所周知的輸出UTF-16)使用Open3: attrs={} attrs[:stdout], attrs[:stderr], status = Open3.capture3(command) unless attrs[:stderr].nil? begin attrs[:stderr].force_encod

    0熱度

    2回答

    我使用: - Ruby 1.9.3-p448 - Windows Server 2008 我有一個包含所使用的程序命令的文件,我用這種方式 C:\> PATH_TO_FOLDER/program.exe file.txt 使用它File.txt有一些命令,所以「program.exe」將執行以下操作: - Execute commands - Reads from a DB using