在打印过程中,强制拔除打印机会出现如下状况:

Hpijs会输出这个信息:unable to send DeviceStatus: Bad file descriptor: hplip_api.c 641

一直循环。

查得

$ man errno | grep "Bad file descriptor"

EBADF           Bad file descriptor (POSIX.1)

解决方案1:

目前改善的是获取hpijs的pid,将其kill 9之后可以结束不停的打印。但是也会打印几百行后停止,所以优化的时候也要将hpijs中这句打印去掉。

static int print_stop_print(struct print_device_t* dev) {

int ret = EXIT_FAILURE;

// hpijs or ijsgutenprint pid.

pid_t pid = getPidByName("hpijs");

if(pid != 0)

if(kill(pid, 9) == 0)

ret = EXIT_SUCCESS;

return ret;

}

解决方案2:(最终采用的方案)

当出现这种情况的时候将自己kill掉。输出一次信息,然后将自己kill掉。

if(errno == EBADF)

exit(-1); // kill(getpid(), 9);

1.exit(-1);测试结果:

GPL Ghostscript 9.04 (2011-08-05)

Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.

This software comes with NO WARRANTY: see the file PUBLIC for details.

Processing pages 1 through 1.

Page 1

unable to write to output, fd=6, count=4096: Input/output error

unable to write to output, fd=6, count=4096: No such device

unable to write to output, fd=6, count=4096: No such device

unable to write to output, fd=6, count=4096: No such device

unable to write to output, fd=6, count=4096: No such device

unable to send DeviceStatus: Bad file descriptor: hplip_api.c 642

Error: /ioerror in --showpage--

Operand stack:

1   true

Execution stack:

%interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1910   1   3   %oparray_pop   1909   1   3   %oparray_pop   1893   1   3   %oparray_pop   --nostringval--   --nostringval--   2   1   1   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--   1793   0   9   %oparray_pop   --nostringval--   --nostringval--

Dictionary stack:

--dict:1161/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82/200(L)--   --dict:108/127(ro)(G)--   --dict:291/300(ro)(G)--   --dict:23/30(L)--   --dict:6/8(L)--   --dict:22/40(L)--

Current allocation mode is local

Last OS error: 32

GPL Ghostscript 9.04: Unrecoverable error, exit code 1

测试成功,在输出一行 unable to send DeviceStatus: Bad file descriptor: hplip_api.c 642后,直接hpijs毙命。

2.kill(getpid(), 9)的测试结果:

测试为无效。

sed命令:

1).添加#include <errno.h>

sed -i '38s/#include "hplip_api.h"/#include <errno.h>\n#include "hplip_api.h"/' hplip_api.c

2.)添加

if(errno == EBADF)

exit(EXIT_FAILURE);

sed -i '643s/goto mordor;/if(errno == EBADF)\n            exit(-1);\n        goto mordor;\n/' hplip_api.c

扩展:

hpijs是一个服务,可以在像vold或者其它一样启动和停止。这样就更符合Android精神。

关于打印过程中强制移除打印机的处理相关推荐

  1. 在react框架中实现打印过程中踩的坑

    最近在做一个需求,就是需要在产品里调用打印机,实现打印票据的操作,我也是第一次做,说真的踩坑不少,希望这篇文章可以帮助到你. 文章目录 前言 window.print()踩的坑 第三方库react-t ...

  2. LQ-630K/LQ-635K 打印过程中出现卡纸故障的分析与处理

    一.现象描述: LQ-630K/LQ635K 打印机在打印连续纸出纸时,纸张堆积在打印机内部造成卡纸的问题,如图(1)(2). 图(1)打印机前部:出纸时纸张堆积在打印机内部 图(2)打印机后部:纸张 ...

  3. 简述计算机在液体成型中的应用,计算机技术在3D打印材料成型过程中的应用

    计算机技术在3D打印材料成型过程中的应用 2019-03-18 07:36:22次浏览 魏嘉良 摘 要 3D打印作为近些年发展起来的集计算机技术.机械制造.材料成型等相关技术于一体的交叉领域.文章结合 ...

  4. pla3d打印材料密度_3D打印金属材料模型过程中常见问题

    在金属3D打印过程中,可能会出现大量设备操作者试图避免的问题,包括孔隙.残余应力.致密度.翘曲.裂纹及表面光洁度等.下面我们来谈谈这几种常出现的问题. 1.表面光洁度 在金属3D打印件被使用或放置在展 ...

  5. 服务器2012还原系统,Windows Server 2012升级R2过程中意外关闭恢复原系统方法

    2012升级R2过程中强制关闭了计算机,导致再次启动后蓝屏提示"BAD_SYSTEM_CONFIG_INFO".用2012安装盘进入尝试修复失败(安全模式什么的都不用想),进入命令 ...

  6. 中琅条码标签打印软件中打印设置中的相关问题

    在日常使用中琅条码标签打印软件时,部分用户经常在打印数量上出错犯糊涂,不知道中琅软件中的标签数量和标签份数两者具体有什么区别,导致在打印过程中出现一系列错误.今天就来详细介绍一下中琅条码标签打印软件的 ...

  7. JAVA产生异常并打印,Java中异常打印输出的常见方法整理

    前言 Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的 ...

  8. r语言 rgl 强制过程中_一个R语言中操纵矢量空间数据的标准化工具—sf

    ​注: 本文是R语言sf包的核心开发者和维护者--来自德国明斯特大学的地理信息学教授:Edzer Pebesma 的一篇关于sf包的简介,发表于2018年7月的R语言期刊,主要讲述了sf的定位.功能. ...

  9. 调用打印机_涨知识|你不知道的关于打印机的打印过程和打印机驱动的那些事...

    以前一直以为打印很简单,不就是编辑好文件按个"打印"就行了?但其实打印过程可以复杂到你分分钟"怀疑人生".你以为的打印过程可能是这样的 ↓. 我们看到的打印过程 ...

最新文章

  1. Vue学习之路---No.7(分享心得,欢迎批评指正)
  2. 读取Excel的文本框,除了解析xml还可以用python调用VBA
  3. OGG-00446 ERROR: Could not find archived log
  4. SAP CRM呼叫中心activity board的填充逻辑调试
  5. Sum of AP series——AP系列之和
  6. 【项目经验】自动回声消除(AEC)原理
  7. 不用软件直接查询QQ好友的IP地址(二) 通过 Ping 得知对方是否联网在线(与QQ是否上线无关)
  8. UGUI制作Tab标签页
  9. 企业内网通讯软件有哪些优势?
  10. Flurry、友盟、TalkingData,Google analytic移动应用统计分析对比
  11. 电源线噪声:共模干扰、差模干扰
  12. PowerBI实用技巧:案例五(巧用Switch函数展现指标RGB颜色)
  13. 网状神经系统的典型特点,网状结构神经系统
  14. python标准数据类型叮叮叮
  15. 淘宝教育视频加速观看(在淘宝教育上看学习视频,需要加速,在谷歌浏览器上安装视频加速插件)
  16. 如何判断选择专业数字功放芯片
  17. Oracle知识点总结(三)
  18. PCA参数,属性,接口列表
  19. iOS 视频播放之MPMoviePlayerController
  20. php 支付宝用户信息授权,h5端支付宝第三方用户信息接口demo

热门文章

  1. ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer
  2. 学习笔记-写论文修改语法、同义词替换、找专业名词的一些网站
  3. Android设备管理器漏洞2--阻止用户取消激活设备管理器
  4. 非接触式IC卡存储结构
  5. 使用pyxlsb库读取xlsb格式excel文件,转为DataFrame(详细)
  6. 三十二、(重点)正则表达式1:re模块(re.match、group())、正则表达式单字符匹配、正则数量({m}、{m,n})
  7. 在linux中设置nexus开机自启动
  8. 82597-82-8,cyclo-(L)-Trp-(L)-Phe,cyclo(Phe-Trp)
  9. 做甲方的正确 “姿势”
  10. 2018年ACM-ICPC亚洲青岛区域竞赛 - M:Function and Function