2010-04-24 181 views
0

我正在運行一個python程序。當獲得的這些行:
f = open("/dev/bus/usb/007/005", "r")
x = fcntl.ioctl(f.fileno(), 0x84005001, '\x00' * 256)
失敗說:
IO錯誤:[錯誤1]不允許操作
什麼導致這個問題呢?python操作不允許(graphtecprint)

+0

哪一個給出錯誤,第一行或第二行。回溯說什麼? – joaquin 2010-04-24 20:34:38

+0

第二行是 – eyecreate 2010-04-24 20:40:29

回答

1

文件系統權限?

ls -l/dev/bus/usb/007/005是什麼意思?

確實cat/dev/bus/usb/007/005工作還是報告同樣的錯誤?

+0

輸出的第一行是: 'crw-rw-rw- 1 root lp 189,772 24.04.2010 15:58/dev/bus/usb/007/00' cat命令打印出一些奇怪的字符到終端。 – eyecreate 2010-04-24 20:42:09

+0

另外,以根用戶身份運行輸出相同的東西。 – eyecreate 2010-04-24 20:48:25

+1

然後可能是ioctl失敗。我對USB設備和ioctls沒有更深入的瞭解。 你正在嘗試做的IOCTL可能是 - 錯幻數 - - 只能由超級 允許只適用於文件打開R/W 對不起,我只能猜測 – plaisthos 2010-04-24 20:50:02

0

的第三個參數fcntl.ioctl,如記錄here,應該是一個1024字節的字符串(不只是256),或者,更好的,一個可能甚至更大尺寸可寫buffer - 底層對象可以是一個字節array.array 。不幸的是,您需要事先知道結果需要多少空間,但您可以使用幾KB(即ioctl似乎是「獲取設備ID」代碼)來安全地播放它,但我不確定最大結果長度可能)。