Linux で次の状況を想定します。
プロセスは、USB シリアル コンバータ デバイスから継続的に読み取りを行っています ( /dev/ttyUSB0
)。そのデバイスが突然取り外され、再び差し込まれます (または、何らかの理由でデバイス自体がリセットされます)。プロセスは引き続き有効なファイル ハンドルを保持します/dev/ttyUSB0
が、プロセスがデバイスを再度開かない限り、デバイスからデータを受信しません ( udevがデバイス ノードを削除して再作成したため)。
プロセスがデバイスを再度開く必要があることを認識できるように、そのような状況を検出する直接的な方法はありますか (つまり、データ フローのタイムアウトを検出することによって間接的にではありません)。/dev/ttyUSB0
を使用して変更時間を監視することは信頼できstat()
ますか?
追加の詳細:
このプロセスでは、標準open()
関数を使用してデバイス ファイルを開きます。
/dev
によってtmpfs
制御されudev
ます。
注:私はこれにudevルールを使用したくなく、プロセスに直接実装されたソリューションを好みます。