問題タブ [udev]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 開いているファイル/デバイスが置換/削除されたかどうかを検出する
Linux で次の状況を想定します。
プロセスは、USB シリアル コンバータ デバイスから継続的に読み取りを行っています ( /dev/ttyUSB0
)。そのデバイスが突然取り外され、再び差し込まれます (または、何らかの理由でデバイス自体がリセットされます)。プロセスは引き続き有効なファイル ハンドルを保持します/dev/ttyUSB0
が、プロセスがデバイスを再度開かない限り、デバイスからデータを受信しません ( udevがデバイス ノードを削除して再作成したため)。
プロセスがデバイスを再度開く必要があることを認識できるように、そのような状況を検出する直接的な方法はありますか (つまり、データ フローのタイムアウトを検出することによって間接的にではありません)。/dev/ttyUSB0
を使用して変更時間を監視することは信頼できstat()
ますか?
追加の詳細:
このプロセスでは、標準open()
関数を使用してデバイス ファイルを開きます。
/dev
によってtmpfs
制御されudev
ます。
注:私はこれにudevルールを使用したくなく、プロセスに直接実装されたソリューションを好みます。
python - udev を使用してデバイスの uuid を取得する方法
pyudev の /media/its-uuid のような USB 大容量ストレージ デバイスのマウント ノードを取得したいのですが、クラス Device にはいくつかの一般的な属性がありますが、uuid やマウント ノードはありません。
どうやってするの
助けてくれてありがとう
c - USB フラッシュ ドライブ挿入用の unix/linux dev ノードの作成を検出またはテストする方法
LinuxシステムでCでコーディングしています。USB フラッシュ ドライブを挿入し、udev に dev ノード (たとえば、/dev/sdc と /dev/sdc1) を作成させ、/dev/sdc が表示されたときにのみアクションを実行したいと考えています。私が行ってきたことは、これを C アプリケーションの待機ループと考え、udev デーモンによって作成される dev ノードを待機することです。次のようなもの:
私の最初の問題は、「/dev/sdc が存在する」という値を返すために、if() テストでどの C ライブラリ関数を使用できるかということです。私の2番目の問題は、単にこれに間違ってアプローチしているだけですか? udev から直接これを検出するには、udev モニター構造を使用する必要がありますか?
python - Linuxでの「イーサネットケーブルの接続」イベントに関する通知の取得
Linux上で実行されるPythonアプリケーションを書いています。ネットワークケーブルが抜き差しされた場合に、登録してシステムから通知を受けられるようにしたい。
USBプラグインイベントの通知を受け取るために、すでにpyUdev (libUdevのPythonバインディング)を使用しています。ただし、ネットワークeth0モジュール(たとえば)は常にロードされたままであるため(ケーブルが接続されているかどうかに関係なく)、必要な情報を取得できません。アップ/ダウンイベントの場合にのみ機能します。
この機能を提供するWindowsWMIに関する多くの投稿を読みましたが、Linuxにはありません。私は正しい方向を見ていますか?
これを自分のプログラムと統合したいので、これを行うPythonの方法(Pythonライブラリ)が理想的です。
linux - udev: ブート時に接続されたデバイス
udev を使用して、Ubuntu 10.04 LTS x64 サーバーで USB ドライブの接続と切断を検出しています。マシンの実行中に USB デバイスが接続されている場合はすべて正常に動作しますが、ブート時に既に USB デバイスが存在する場合、スクリプトが完了しmkdir /tmp/blah
ません。
その後sudo udevadm trigger
、ターミナルで入力すると、すべて問題ありません。
udev が接続されたデバイスをそのルールに照らして最初に評価する時点では、ルート ファイルシステムはマウントされていないと想定しています。
したがって、私の質問は次のとおりです。
- 問題を正しく特定できましたか?
- それを解決する標準的な方法はありますか?つまり、マウント
/tmp/
する前と後の両方で使用できる代替手段はありますか?/
c - libudev のアドバイスが必要
私はプログラミング プロジェクトに着手しています。このプロジェクトでは、他のクールなことを行う前に、リムーバブル メディア (USB サム ドライブなど) のデバイス ID を確認する必要があります。
私の友人の何人かは、シリアル番号を使用するように私に指摘しました。そして、udevadm コマンドを使用した予備テストは、これが機能することを示しています。追加のチェックを行ったところ、ソフトウェアを libudev で動作させることができれば、(最小限) ubuntu、slackware、および gentoo でコンパイルする必要があるようです。これは非常にメリットがあります。
そこで、bing を使用してチュートリアルを見つけ、Signal 11 サイト (http://www.signal11.us/oss/udev/) を入手しました。これは非常によく書かれたチュートリアルです。実際、必要なものはすべて揃っているようです。コードをダウンロードします。プラットフォーム固有のバグをいくつか修正してからコンパイルします。ブーム!Gcc はエラーなしでコンパイルされます。ここまでは順調ですね。
しかし、実行しようとすると、いくつかのバグが発生します。バグを修正し、動作するソフトウェアを作成するには、libudev を十分に理解できるように、さらにチュートリアルを読む必要があることに気付きました。問題は、他のチュートリアル (私が見つけることができるもの) が実際にはなく、ライブラリ ドキュメントの (唯一の既知の?) サイトである kernel.org サイトが、最近のサーバー侵害の後にダウンしていることです。
system() に udevadm ディレクティブを発行して結果を解析することも考えましたが、それはソフトウェアをまとめる非常にハックな方法であり、書き終わったらコミュニティに公開する予定です。
では、libudevを学ぶにはどうすればよいでしょうか??
android - Adbはしばらくすると私の電話の検出を停止します
私はLinuxマシンでAndroid用に開発していますが、udev
Android用のルールをすでに作成しており、機能します。しばらくして、デバイスを取り外してから再度接続すると、実行したり、デバイスに関する情報を取得したりしてadb
も、デバイスが認識されません。ルールをリロードしようとしましたが、機能しません。プロセスを強制終了しようとしましたが、それでも機能しません。lusb
dmesg
udev
adb
誰かが助けることができますか?とにかくありがとうございました。
embedded - 埋め込み Linux ファイル名の長さ
アーム開発プラットフォームを使用しています。そこにudevをインストールしましたが、完璧に動作します。しかし、ペンドライブをマウントしてファイルの内容を見ると、名前が 8 文字を超えるすべてのファイルとフォルダーが「~」文字に置き換えられています。例: myfilename.mp3 は myfile~e.mp3 に置き換えられます
udev をインストールする前は、うまく機能していました。(すべてのファイル名は正常に表示されます)。私は何をすべきか?
ありがとうございました。
embedded - udev ペンドライブのファイル名の長さ
udevを使用してペンドライブをマウントする際に問題があります。私はアーム開発プラットフォームで作業しており、udev を正常にインストールしました。私のudevルールは次のとおりです。BUS=="usb", ID=="1-1", KERNEL=="sd?1", NAME="pen1" ここで必要なのは、ペンがポート "1" にマウントされるたびにノード "pen1" を割り当てることです-1」。udev は正常に動作しますが、「mount /dev/pen1 /mnt」を使用してマウントし、コンテンツにアクセスすると、ファイル名が壊れて表示され、8 ビットしか表示されません。例: myfilename.mp3 は myfile~e.mp3 に置き換えられます
私は何をすべきか?
linux - Linux USB デバイスパスの意味? (USB-シリアルコンバーターを区別する必要があります)
USB ハブに複数の USB シリアル コンバータ (Prolific) を接続しています。接続されている物理ポートに応じてこれらのコンバーターを区別できるudev 情報が見つかりません。
デバイスパスがその情報を提供してくれることを願っています...
/devices/pci0000:00/0000:00:0f.5/usb1/1-3/1-3.1/1-3.1:1.0/ttyUSB0
...しかし、数字の意味を説明するドキュメントは見つかりませんでした (うまくいけば、そのうちの 1 つが物理ポートを正確に識別します)。誰かがこれらの番号を説明して、物理ポートを明確に識別できるかどうか教えてもらえますか?