ioctl()を呼び出す C プログラムがありますが、-1 とEPERMに設定されたerrnoを返します。しかし、そのファイルのモードを「777」に変更しました。
ioctl()がerrnoをEPERMに設定して-1 を返す理由を教えてください。
ioctl()を呼び出す C プログラムがありますが、-1 とEPERMに設定されたerrnoを返します。しかし、そのファイルのモードを「777」に変更しました。
ioctl()がerrnoをEPERMに設定して-1 を返す理由を教えてください。
ioctl を呼び出しているデバイスには、要求したアクションを実行する前に機能をチェックするコードが含まれている場合があります。この場合、特殊ファイルのパーミッションを 777 に設定しても十分ではありません。問題のデバイスをサポートするドライバーのソースを掘り下げたい場合は、次のようなものを探して、実際に必要な機能を把握できます。
if (! capable (CAP_SYS_ADMIN))
return -EPERM;
他の人が提案したように、機能について調べたり、アプリケーションをルートとして実行したりすることをお勧めします。
はい、EPERM (操作は許可されていません) エラーは、操作を実行するのに十分な権限がないことを示しています。