簡體   English   中英

以用戶身份而不是sudo運行libusb 1.0程序中的分段錯誤

[英]Segmentation fault in libusb 1.0 program when run as user, not as sudo

我正在編寫一個使用libusb 1.0和cImg的相機捕獲程序。 它連接到我的Atik 314L天文相機,並捕獲圖像以顯示在屏幕上。 當以常規或超級用戶身份編譯時,它可以很好地編譯,以根用戶身份運行時,它可以很好地運行,但是以任何其他方式運行時,都會產生分段錯誤

我正在使用Code :: Blocks ,並且調用堆棧顯示在調用usb_control_msg()函數時發生分段錯誤:

#0 (usb_control_msg(dev=0x0, requesttype=64, request=160, value=58880, index=0 bytes=0x7fffffffe5df "\001 \346\377\377\377\177", size=1, timeout=500) (linux.c:152)

我對Linux環境中的編程很陌生,而且我不確定該如何為普通用戶運行它。 到目前為止,這是我嘗試過的步驟:

  1. 將我的用戶添加到所有用戶組中,以查看是否存在組權限問題(哎呀,我什至嘗試將自己添加到“ root”,但它什么也沒做)
  2. 將規則添加到/etc/udev/rules.d ,如下所示:PROGRAM =“ / home / [用戶名] / git / camera / prog”,MODE =“ 0660”,GROUP =“ camera”
  3. 嘗試將程序本身的權限更改為777。盡管這是最后的努力-我並不是真的希望它能起作用。

我正在學習如何進行調試,因此,如果您需要日志或其他任何東西以查看有什么問題,請告訴我。

您可能需要使用諸如fnctl()類的功能來設置/獲取設備的標志,並且根據您的要求,您可以設置文件訪問模式( O_RDONLY / O_WRONLY / O_RDWR )和文件創建標志( O_CREAT / O_EXCL / O_NOCTTY / O_TRUNC )。 但是,在Linux上,此命令只能更改O_APPEND, O_ASYNC, O_DIRECT, O_NOATIMEO_NONBLOCK標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM