打印使用CUPS,我的应用程序何时可以退出?

我有一个使用杯子打印的Linux应用程序,但是我注意到,如果我打印,然后立即退出我的应用程序,我的打印输出从不出现。 所以我认为我的应用程序必须等待它退出之前实际上打印机,所以有人知道如何分辨何时完成打印?

我正在使用libcups打印我的应用程序生成的postscript文件。 所以我使用命令打印文件,然后返回到我的应用程序。 所以我的应用程序认为该文档已经closures到打印机队列,当我猜测它还没有做到这一点。 所以,我并不是所有的用户都必须在系统托盘中查看打印机图标的屏幕,我宁愿有一个代码解决scheme,所以如果他们尝试退出之前,它已经被真正的发送,我可以提醒他们的事实。 另外,我生成的文件是一个临时文件,所以它会很高兴知道什么时候完成,所以我可以删除它。

只要你的CUPS网页界面(localhost:631)或其他一些东西来看看CUPS看到的显示你的CUPS收到的工作,你可以退出应用程序。

如何使用打印假脱机服务,如lprlpq

您当然不需要等到纸张不在打印机中。 但是,您需要等待临时文件完全由cupsd在spooling aerea(通常为/var/spool/cups/ )中接收。

如果您打印在命令行上(使用CUPS lplpr命令之一),如果shell提示符返回(该命令甚至会报告发送的作业的CUPS作业ID),您就会知道该作业正在进行,并且如果退出代码( $? )是0。

你不能指出libcups的哪一部分,以及你正在使用哪个函数来实现你想要的。 如果我不得不这样做,我会使用IPP函数cupsSendRequest ,然后cupsGetResponse知道结果。

你的应用很可能还没有完成打印,当你退出它。 如果您使用evince打印PDF或其他文档,这是一个已知的错误 – 没有可视化的确认,说明正在进行打印操作。 如果打印作业已经提交,打印机图标将出现在系统托盘中,直到实际打印完成。 您可以单击系统托盘中的打印机图标,查看当前正在运行和待处理的作业。