ioctl вернет -1 с ошибкой, установленной в EPERM - PullRequest
0 голосов
/ 07 апреля 2009

У меня есть программа c, которая вызывает ioctl (), но она возвращает -1 и errno установлена ​​в EPERM. Но я изменил режим этого файла на "777".

Скажите, пожалуйста, почему ioctl по-прежнему возвращает -1, если для errno установлено значение EPERM?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 октября 2009

Устройство, на котором вы вызываете ioctl, может содержать некоторый код, который проверяет возможности перед выполнением запрошенного вами действия. Установка разрешений для специального файла на 777 будет недостаточной в этом случае. Если вы хотите найти источник драйвера, который поддерживает данное устройство, вы можете найти что-то вроде следующего, чтобы выяснить, какие возможности действительно требуются.

if (! capable (CAP_SYS_ADMIN))
    return -EPERM;

Возможно, вы захотите прочитать о возможностях или просто запустить свое приложение от имени пользователя root, как предлагали другие.

Справочная страница Linux по возможностям

0 голосов
/ 08 июля 2009

Да, ошибка EPERM ( Операция не разрешена ) указывает на то, что у вас нет достаточных разрешений для выполнения операции. Поскольку liw.fi предлагается, попробуйте выполняется с правами суперпользователя или сообщите нам, какую операцию нужно выполнить.

...