0

私はドライバー(より単純なもの)を作りました。

現在、2 つのプロセス (fork() による) と 2 つのスレッドを介してデバイス ファイルを開いています。それらの違いは何ですか??

4

1 に答える 1

0

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

于 2013-05-24T06:10:22.057 に答える