在Debian,C ++中,自动找到打印机的节点

时间:2014-12-23 18:48:34

标签: c++ printing debian

我的代码中有这一行:

#define DEFAULT_PRINTER "/dev/usb/lp0"

虽然pc重新启动后节点发生了变化(例如lp3,lp2)。如何自动设置?代码不会使用错误的路径。感谢。

1 个答案:

答案 0 :(得分:2)

可能的解决方案:

  • 对循环中的每个stat()尝试/dev/usb/lp*(如果您有单个打印机,那就足够了);
  • 您可以尝试修改udev规则,为您的打印机分配固定的lp设备数字;

更新(stat()):

char DEFAULT_PRINTER[] = "/dev/usb/lpX";
struct stat buf;
for( i = 0; i < 10; i++ ){
   DEFAULT_PRINTER[11] = '0' + i;
   if( ! stat( DEFAULT_PRINTER, &buf ) ) break;
}

注意:这不是&#34;通用&#34;代码,它不会在不经过调整的情况下为不同长度的名称(例如/dev/usb/lp10)工作。这只是为了表达一个想法。