我正在寫一個C程序,它會自動登錄到某些連接的Linux設備(通過串行端口)並讀取其所有日誌文件等。
所以問題來了:我沒有想硬編碼的串行端口(在我的情況是/ dev/ttyS0來)到我的代碼,但給某種提示的開頭,列出所有實際存在設備從中我可以選擇它作爲參數傳遞。
有沒有辦法在/ dev文件夾中區分邏輯設備和物理設備?我不想在/ dev文件夾中使用ls,並顯示所有(在我的情況下)不必要的信息;我只想要顯示實際存在的串行端口。UNIX - 列出所有現有的串行端口
0
A
回答
1
您可以通過讀取目錄/sys/class/tty/
中的符號鏈接來枚舉系統中的所有ttys。
然後你可以閱讀type
pseudofile來檢查它是一個真正的串口還是虛擬的。可能的值是在<linux/serial.h>
:
#define PORT_UNKNOWN 0
#define PORT_8250 1
#define PORT_16450 2
#define PORT_16550 3
#define PORT_16550A 4
#define PORT_CIRRUS 5 /* usurped by cyclades.c */
#define PORT_16650 6
#define PORT_16650V2 7
#define PORT_16750 8
#define PORT_STARTECH 9 /* usurped by cyclades.c */
#define PORT_16C950 10 /* Oxford Semiconductor */
#define PORT_16654 11
#define PORT_16850 12
#define PORT_RSA 13 /* RSA-DV II/S card */
大多數虛擬端口甚至不會有type
文件。無論如何,0
可能意味着虛擬或模擬端口。
+0
感謝您的回答,但我如何閱讀給定端口的僞類型? – Buitenlander 2014-11-06 12:20:42
+0
@Buitenlander您只需打開文件並閱讀它,就像使用普通文件一樣。你甚至可以用'cat'看到內容。 – rodrigo 2014-11-06 13:01:42
相關問題
- 1. 當有新的串行端口時出現信號
- 2. 列出文件中特定字符串或數字的所有出現:UNIX
- 3. WMI:獲取所有串行(COM)端口列表,包括虛擬端口
- 4. 有關SCO Unix Com端口的信息
- 5. 收聽所有的端口
- 6. C++ linux檢測所有的串行端口
- 7. 所有gnome終端窗口列表
- 8. 將所有端口列爲JComboBox
- 9. 取代所有字符串的出現
- 10. 替換所有出現的字符串
- 11. 替換所有的字符串出現
- 12. 匹配所有出現的字符串
- 13. 列出實現給定接口的包中的所有類
- 14. Qt插件:有沒有辦法列出插件實現的所有接口?
- 15. 列出所有的DLL從GAC實現特定接口
- 16. MacPython:以編程方式查找所有串行端口
- 17. 串行COM端口沒有打開
- 18. Apache響應所有端口
- 19. 打印所有端口值
- 20. 如何更換一個單詞中出現的所有UNIX/LINUX
- 21. 如何知道什麼時候串行端口上沒有數據unix
- 22. 選擇所有出現多次的行
- 23. Mac命令行 - 列出可用的串行端口?
- 24. WCF列出實現特定合同的所有客戶端端點
- 25. WordPress的出口沒有出口的所有帖子
- 26. Kivy運行,但沒有窗口出現
- 27. 在C#中發現串行端口
- 28. 列表機器的串行端口
- 29. 刪除列中出現錯誤的所有行
- 30. 選擇首次出現唯一列集合的所有行
您可能可以在'/ proc'或'/ sys'目錄中找到它。 – 2014-11-06 10:25:18
問題可能是http://stackoverflow.com/a/9914339 – jkalden 2014-11-06 10:41:10
的重複請考慮不限制用戶到列表中的一個端口。對於某些應用程序,讓程序在不是串口的文件上運行可能會很有用。 – fuz 2014-11-06 15:26:49