C++ 使用Linux访问并行端口

C++ 使用Linux访问并行端口,c++,c,linux,parallel-port,lpt,C++,C,Linux,Parallel Port,Lpt,目前,我通过以下方式访问并行端口: ioperm(data->baseaddr,5,1); outb(0x00,data->controlport); inb(data->statusport); 最大的缺点是:它需要root权限,并且仅适用于真正的并行端口硬件(意味着不支持USB-2-LPT转换器) 那么:有没有其他方法从并行端口读/写数据 谢谢 如您所述,用户必须具有访问并行端口的权限,才能成功运行可执行文件。通常,只有root用户具有访问端口的权限,因此程序必须以roo

目前,我通过以下方式访问并行端口:

ioperm(data->baseaddr,5,1);
outb(0x00,data->controlport);
inb(data->statusport);
最大的缺点是:它需要root权限,并且仅适用于真正的并行端口硬件(意味着不支持USB-2-LPT转换器)

那么:有没有其他方法从并行端口读/写数据


谢谢

如您所述,用户必须具有访问并行端口的权限,才能成功运行可执行文件。通常,只有root用户具有访问端口的权限,因此程序必须以root权限运行。但是,应该可以通过执行以下操作使非root用户能够运行可执行文件:

1) 使root成为可执行文件的所有者。一种方法是将程序编译为root


2) 授予非用户执行程序的权限,但当由非root用户运行时,程序以root权限运行。您可以使用以下命令(以root身份)将程序设置为以所有者权限(即root权限)运行:
chmod+s/name/of/executable

总体而言,您想做什么?我可以猜,但如果你解释一下它是什么,那就好了,因为这里可能有不止一种可能的解决方案。@Mats-peterson:将控制数据发送到连接的设备。这个设备是一个(非常奇特的)XY表,在并行端口需要ASCII运动命令。大多数USB到并行适配器是专门为打印机设计的。它们与所有并行设备不兼容。此链接:是一个页面,介绍在Linux下访问并行端口的两种方法。端口的常用名称是:/dev/parport0@user3629249:就这样-太好了,谢谢!上面提到的解决方案需要root权限,因为它执行直接硬件访问。使用可执行文件的权限进行黑客攻击将不是一个合适的解决方案,因为它会打开相同的安全漏洞。因此,上面评论中提到的能够访问“/dev/”中的设备的解决方案就是我要寻找的。