私はドライバー(より単純なもの)を作りました。
現在、2 つのプロセス (fork() による) と 2 つのスレッドを介してデバイス ファイルを開いています。それらの違いは何ですか??
私はドライバー(より単純なもの)を作りました。
現在、2 つのプロセス (fork() による) と 2 つのスレッドを介してデバイス ファイルを開いています。それらの違いは何ですか??
最初にあなたの質問を見たとき、違いはないと思いましたが、fd 番号を増やすだけで、3 から始まり、増分します。疑わしいのは、メインスレッドでデバイスノードを開くと、スレッドで同じ fd を使用できることです。fork() を使用してデバイス ノードを開くと、子プロセスもファイル記述子を継承します。重要な点は、スレッドと子プロセス (fork()) がファイル記述子を継承するため、スレッドが fd を閉じると、開かれたデバイス ノードは文字通り閉じられますが、fork() の場合、継承された fd を閉じても、deviceスレッドの場合のようにファイル参照カウントが 1 つではなく、OFDT (Open File Descriptor Table) データ構造で 2 つであるため、ノードはクローズされません。この答えがあなたの疑問を明確にすることを願っています:-)。