1

ioctl()を呼び出す C プログラムがありますが、-1 とEPERMに設定されたerrnoを返します。しかし、そのファイルのモードを「777」に変更しました。

ioctl()がerrnoをEPERMに設定して-1 を返す理由を教えてください。

4

2 に答える 2

0

ioctl を呼び出しているデバイスには、要求したアクションを実行する前に機能をチェックするコードが含まれている場合があります。この場合、特殊ファイルのパーミッションを 777 に設定しても十分ではありません。問題のデバイスをサポートするドライバーのソースを掘り下げたい場合は、次のようなものを探して、実際に必要な機能を把握できます。

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

他の人が提案したように、機能について調べたり、アプリケーションをルートとして実行したりすることをお勧めします。

機能の Linux マニュアル ページ

于 2009-10-17T22:48:32.283 に答える
-1

はい、EPERM (操作は許可されていません) エラーは、操作を実行するのに十分な権限がないことを示します

于 2009-07-08T08:22:47.657 に答える