实现打印机后台处理程序



我们有一个作业,我们必须使用链表实现打印机后台处理程序。我已经使用了STL的列表来实现所有内容。我可以让程序发送打印命令并维护文档的状态。问题是我不知道如何模仿/发送虚拟打印命令,以便打印文档。如果我使用 Sleep(),整个程序会有延迟,而我希望反手打印,其他用户可以访问该程序。关于我的问题,任何帮助将不胜感激,谢谢。

在真正的打印后台处理程序中,要么有多个线程(或者在Unix中,可能是fork),要么系统使用"等待多个对象"类型的方法,当有东西要打印时,文档的一部分被发送到打印机,设置以便在该部分被"消费"时,一个可等待的对象是"准备好的"。然后后台处理程序等待发生某些事情(新作业或打印作业)。等待完成后,它将确定发生了什么。如果是新的打印作业,请将其排队,如果它是"一些打印完成",它会检查这是否是最后一次打印并完成作业,或者将更多内容发送到打印机。

在伪cdoe中,它可能看起来像这样:

for(;;)
{
   what = wait_for_work();
   switch (what)
   {
     case new_job:
       add_new_job();
       break;
     case print_write_done:
       if (document_complete)
          remove_current_job();
       else
          send_more_from_current_job();
       break;
     case spooler_terminate:
       exit(0);
     default:
       print_error_message();
   }
}

显然,如果不看到你的代码,就很难说你应该如何实现它。但是可以有一个计时器来模拟"以小块打印的文档",例如,每 100 毫秒消耗 10KB。

相关内容

  • 没有找到相关文章

最新更新