使用CUPS进行打印时,我的应用何时可以退出?
我有一个使用杯子进行打印的Linux应用程序,但是我注意到,如果我先打印然后退出应用程序,则打印输出将永远不会出现。因此,我假设我的应用程序必须等待退出打印机后才真正退出打印机,所以有人知道如何知道何时完成打印吗?
我正在使用libcups打印我的应用程序生成的postscript文件。因此,我使用命令来打印文件,然后它返回到我的应用程序。因此,我的应用程序认为文档尚未到达打印机队列时就认为该文档不在打印机队列中。因此,与其让我所有的用户不必在系统托盘上的打印机图标的屏幕上看,我还希望找到一种代码解决方案,因此,如果他们在真正发送出去之前尝试退出,我可以提醒他们事实。另外,我生成的文件是一个临时文件,因此很高兴知道它何时完成,因此可以将其删除。
解决方案
回答
退出应用程序时,它可能尚未完成打印。如果我们使用evince来打印PDF或者其他文档,则这是一个已知的错误-无法直观地确认正在进行打印操作。如果已提交打印作业,则打印机图标将出现在系统托盘中,直到完成实际打印为止。我们可以单击系统任务栏中的打印机图标,查看当前正在运行和正在等待的作业。
回答
一旦CUPS Web界面(localhost:631)或者其他查看CUPS的内容显示出CUPS收到了该工作,就可以退出该应用程序。
回答
如何使用类似" lpr"和" lpq"的后台打印服务?
回答
我们当然不需要等到纸张用完打印机。但是,我们需要等待,直到cupsd在其假脱机区域(通常是/ var / spool / cups /
)中完全收到了临时文件。
如果我们在命令行上打印(使用CUPS的lp或者lpr命令之一),则在shell提示返回时,我们将知道该作业正在进行(该命令甚至会报告所发送作业的CUPS作业ID),且退出代码($?
)为0。
我们没有指出libcup的哪个部分以及使用哪个函数调用来实现所需的功能。如果必须这样做,则可以使用IPP函数" cupsSendRequest",然后使用" cupsGetResponse"来了解结果。