в настоящее время я получаю доступ к параллельному порту следующим образом:
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