我有一个调用ioctl()的c程序,但它返回-1并且errno设置为EPERM。 但我已将该文件的模式更改为“777”。
你能否告诉我为什么ioctl仍然返回-1并且errno设置为EPERM?
谢谢。
答案 0 :(得分:0)
您调用ioctl的设备可能包含一些代码,用于在执行您请求的操作之前检查功能。在这种情况下,将特殊文件的权限设置为777是不够的。如果您想深入了解支持相关设备的驱动程序的源代码,您可以查找以下内容,以确定实际需要的功能。
if (! capable (CAP_SYS_ADMIN))
return -EPERM;
您可能希望阅读功能,或者只是像其他人建议的那样以root身份运行您的应用程序。
答案 1 :(得分:-1)
是的,EPERM(不允许操作)错误表示您没有足够的权限来执行操作。如 liw.fi 建议,尝试使用root权限执行或告诉我们要执行的操作。