ioctl返回-1与errno设置为EPERM

问题描述:

我有一个c程序调用ioctl(),但它返回-1和errno设置为EPERM。 但我已将该文件的模式更改为“777”。ioctl返回-1与errno设置为EPERM

你能告诉我为什么ioctl仍然返回-1与errno设置为EPERM?

谢谢。

+0

告诉我们IOCTL你想打电话,用什么参数,什么设备上。 ioctl几乎可以做任何事情。 – MarkR 2009-04-07 19:39:49

是啊,EPERM(操作不允许)错误表明您没有足够的权限执行operation.As liw.fi建议,尝试以root权限执行或告诉我们什么是操作要做。

您正在调用ioctl的设备可能包含一些代码,用于在执行您请求的操作之前检查功能。在这种情况下,将特殊文件的权限设置为777是不够的。如果您想深入了解支持该设备的驱动程序的源代码,您可以查找以下内容来了解​​实际需要的功能。

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

您可能想要了解功能或只是像其他人所建议的那样以root身份运行您的应用程序。

Linux Man Page for Capabilities