我的代码中有这一行:
#define DEFAULT_PRINTER "/dev/usb/lp0"
虽然pc重新启动后节点发生了变化(例如lp3,lp2)。如何自动设置?代码不会使用错误的路径。感谢。
答案 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
)工作。这只是为了表达一个想法。