2011-11-11 89 views
0

我通過調用寫一個Ruby腳本,打印:CUPS的lp返回什麼?

`/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}` 

我想優雅地處理印刷錯誤,但無法確定是什麼lp回報,當我執行它。通常它是像這樣的字符串:

請求ID是PrinterQueue-68(1個文件(S))

是否有任何地方,描述了lp應在陌生的情況下返回?

謝謝!

+0

您是否檢查過手冊頁? –

+0

根本不討論返回值:( – Jay

+1

'open3'可能比反引號更好,這樣你就可以獲得標準輸出,標準錯誤和返回值(如果有的話,它應該是非零的錯誤)。 –

回答

2

請允許我詳細說明我的評論。

你應該忘記使用反引號,並直接去Open3。特別是,Open3.capture3

out, err, status = Open3.capture3("/usr/bin/lp -d PrinterQueue -U #{user} #{fileToBePrinted}") 

然後out將是包含從lp標準輸出一個字符串,err將含有標準錯誤的字符串,並status將是一個Process::Status實例。您檢查status.success?以查看lp命令是否正常工作,如果不起作用,則查看err(或向用戶顯示err)。

0

字符串request id is PrinterQueue-68 (1 file(s))是什麼lp命令打印,沒有什麼回報

如果lp命令失敗,它將返回一個非零的退出狀態。 (它也應該打印一條錯誤消息,但是這些消息不一定記錄在案,並且可能會從一個版本更改爲下一個版本。)

據我所知,可以在使用反引號調用一個命令後查詢$?的值。如果命令成功,則$?應該爲0.如果失敗,它將具有一些非零值。

在評論中,@ muistooshort建議使用open3;這可能比使用反引號更強大和更靈活。