Termios.h串行通信。检查设备断开连接

问题描述:

我正在使用termios.h与USB加密狗进行通信。我想在断开加密狗时关闭文件描述符。有没有办法做到这一点。我知道对于f.e.一个TCP/IP连接,如果另一方关闭了连接,你将得到一个EOF。但是,通过串行连接,我的程序基本上可以运行(我使用循环从描述符中读取...)。Termios.h串行通信。检查设备断开连接

基本上我想有一些迹象表明,连接已关闭,以便我可以优雅地关闭程序。也许通过更改ioctl的设置?

+0

只是为了澄清:我知道udev等。我想知道是否有类似于TCP/IP的方式,您可以在其中读取文件描述符,如果它是EOF,则知道连接已关闭。我还没有找到一种方法来做到这一点与串行端口。但也许有一个特殊的配置,允许..(?) – user3142067

+0

你的程序疯狂,因为...?也许你应该寻找解决方案 - 从一个“破碎的”描述符中读取时应该把'errno'设置为'EAGAIN'以外的值,当没有数据时使用。 – nsilent22

+0

感谢您的建议。我明天会试试这个...... – user3142067

我Google利用搜索短语有点如何接收USB断开通知,下窗和*.com跨Detecting USB Insertion/Removal Events in Windows using C++来了。如果你在Linux上运行,你可以调整这个单词并尝试这些答案。

+0

我知道如何使用udev守护进程或libudev来检测事件。我设法编写我自己的守护进程。但是,我想知道是否有某种方式只能使用termios和套接字... 因为我没有设法在插入USB Dongle时使udev规则正常工作,所以我编写了这个守护进程......但是为了关闭正确的程序(我想启动该程序的任意数量的实例)我需要保存PID以便在删除Dongle时将其杀死。通过注意到加密狗已被删除,该程序自行关闭会很好。 – user3142067