2015-07-19 74 views
0

我正在使用termios.h與USB加密狗進行通信。我想在斷開加密狗時關閉文件描述符。有沒有辦法做到這一點。我知道對於f.e.一個TCP/IP連接,如果另一方關閉了連接,你將得到一個EOF。但是,通過串行連接,我的程序基本上可以運行(我使用循環從描述符中讀取...)。Termios.h串行通信。檢查設備斷開連接

基本上我想有一些跡象表明,連接已關閉,以便我可以優雅地關閉程序。也許通過更改ioctl的設置?

+0

只是爲了澄清:我知道udev等。我想知道是否有類似於TCP/IP的方式,您可以在其中讀取文件描述符,如果它是EOF,則知道連接已關閉。我還沒有找到一種方法來做到這一點與串行端口。但也許有一個特殊的配置,允許..(?) – user3142067

+0

你的程序瘋狂,因爲...?也許你應該尋找解決方案 - 從一個「破碎的」描述符中讀取時應該把'errno'設置爲'EAGAIN'以外的值,當沒有數據時使用。 – nsilent22

+0

感謝您的建議。我明天會試試這個...... – user3142067

回答

0

我Google利用搜索短語有點如何接收USB斷開通知,下窗和stackoverflow.com跨Detecting USB Insertion/Removal Events in Windows using C++來了。如果你在Linux上運行,你可以調整這個單詞並嘗試這些答案。

+0

我知道如何使用udev守護進程或libudev來檢測事件。我設法編寫我自己的守護進程。但是,我想知道是否有某種方式只能使用termios和套接字... 因爲我沒有設法在插入USB Dongle時使udev規則正常工作,所以我編寫了這個守護進程......但是爲了關閉正確的程序(我想啓動該程序的任意數量的實例)我需要保存PID以便在刪除Dongle時將其殺死。通過注意到加密狗已被刪除,該程序自行關閉會很好。 – user3142067

相關問題