我有一個c程序調用ioctl(),但它返回-1和errno設置爲EPERM。 但我已將該文件的模式更改爲「777」。ioctl返回-1與errno設置爲EPERM
你能告訴我爲什麼ioctl仍然返回-1與errno設置爲EPERM?
謝謝。
我有一個c程序調用ioctl(),但它返回-1和errno設置爲EPERM。 但我已將該文件的模式更改爲「777」。ioctl返回-1與errno設置爲EPERM
你能告訴我爲什麼ioctl仍然返回-1與errno設置爲EPERM?
謝謝。
是啊,EPERM(操作不允許)錯誤表明您沒有足夠的權限執行operation.As liw.fi建議,嘗試以root權限執行或告訴我們什麼是操作要做。
您正在調用ioctl的設備可能包含一些代碼,用於在執行您請求的操作之前檢查功能。在這種情況下,將特殊文件的權限設置爲777是不夠的。如果您想深入瞭解支持該設備的驅動程序的源代碼,您可以查找以下內容來了解實際需要的功能。
if (! capable (CAP_SYS_ADMIN))
return -EPERM;
您可能想要了解功能或只是像其他人所建議的那樣以root身份運行您的應用程序。
告訴我們IOCTL你想打電話,用什麼參數,什麼設備上。 ioctl幾乎可以做任何事情。 – MarkR 2009-04-07 19:39:49