もちろん、ファイルが開いているか開いていない可能性があります。
ただし、ファイル記述子の定義は開かれたファイルを参照します(正しいですか)。 (まあ、パイプのようなファイル以外のものを参照しない限り。しかしまだ開いています。)
私は「ファイル記述子を開く」というフレーズに何度も触れました。私信じる実際に開かれたファイル記述子に加えて他の種類のファイル記述子がないため、これは重複します。しかし、私はこれを確認したかった。
ファイル記述子が「オープン」以外の状態にありますか? (閉鎖されたらなくなるのではないですか?)
答え1
プログラムは次のことを行います。
閉じる(0);
標準入力ファイル記述子は値を変更しませんが、開いたファイル記述を参照しません。再配布に使用できます。たとえば、後でそれを使用しようとすると、次のようなread()
結果が同時に発生します。EBADF
それでもファイル記述子です開かれたファイルの説明を参照する割り当てられたファイルではありません。これは悪いファイル記述子。
追加読書
- "
close()
"。 オープングループ基本仕様問題7. IEEE 1003.1:2008。グループを開きます。 2018. - "
read()
"。 オープングループ基本仕様問題7. IEEE 1003.1:2008。グループを開きます。 2018.
答え2
申し訳ありません。非常に微妙な違いのようです。他の人があなたと同じ正確な定義を知っていると仮定しないでください。あいまいな部分がある場合は、コンテキストで解決できることを確認してください。私はあなたに同意する答えを書くことができますが、以下を引用して他の答えに同意しないようです。
各ファイル記述子は、正確に1つのオープンファイル記述を参照します。
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258
したがって、それが正確に以下を参照していない場合ファイル説明を開く、それはできませんファイル記述子。返品
ファイルが閉じられると、ファイル記述子はもう存在しません。これは、その整数がもはやファイルを参照しないためです。
http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html