CUPS的lp返回什么?

问题描述 投票:0回答:2

我正在写一个ruby脚本,通过调用打印:

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

我想优雅地处理打印错误,但无法确定执行时lp返回的内容。通常它是这样的字符串:

请求ID是PrinterQueue-68(1个文件)

有没有描述lp应该在奇怪情况下返回的地方?

谢谢!

ruby shell cups
2个回答
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;这可能比使用反引号更强大和灵活。

© www.soinside.com 2019 - 2024. All rights reserved.