2009-04-07 343 views
0

我有一個c程序調用ioctl(),但它返回-1和errno設置爲EPERM。 但我已將該文件的模式更改爲「777」。ioctl返回-1與errno設置爲EPERM

你能告訴我爲什麼ioctl仍然返回-1與errno設置爲EPERM?

謝謝。

+0

告訴我們IOCTL你想打電話,用什麼參數,什麼設備上。 ioctl幾乎可以做任何事情。 – MarkR 2009-04-07 19:39:49

回答

-1

是啊,EPERM(操作不允許)錯誤表明您沒有足夠的權限執行operation.As liw.fi建議,嘗試以root權限執行或告訴我們什麼是操作要做。

0

您正在調用ioctl的設備可能包含一些代碼,用於在執行您請求的操作之前檢查功能。在這種情況下,將特殊文件的權限設置爲777是不夠的。如果您想深入瞭解支持該設備的驅動程序的源代碼,您可以查找以下內容來了解​​實際需要的功能。

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

您可能想要了解功能或只是像其他人所建議的那樣以root身份運行您的應用程序。

Linux Man Page for Capabilities

相關問題