ファイルの場合、 orの呼び出しとどちらを使用する必要があるfopen
かの違いは何ですか?fclose
close
フォークされた子もファイルにアクセスできる場合、ファイルを使い終わったらどうすればよいでしょうか?
ファイルの場合、 orの呼び出しとどちらを使用する必要があるfopen
かの違いは何ですか?fclose
close
フォークされた子もファイルにアクセスできる場合、ファイルを使い終わったらどうすればよいでしょうか?
fclose()
は、ファイル ストリームに関連する関数です。を使用してファイルを開きfopen()
、ストリームを に割り当てると、FILE *ptr
. 次にfclose()
、開いているファイルを閉じるために使用します。
close()
ファイル記述子に関する機能です。の助けを借りてファイルを開きopen()
、記述子をint fd
. 次にclose()
、開いているファイルを閉じるために使用します。
などの関数はC 標準関数fopen()
ですが、などの他のカテゴリは POSIX 固有です。これは、などで記述されたコードが標準 C コードではないため、移植性がないことを意味します。などで書かれたコードは標準的なコードであり、あらゆるタイプのシステムに移植できます。fclose()
open()
close()
open()
close()
fopen()
fclose
どちらを使用すればよいですか?
ファイルをどのように開いたかによって異なります。でファイルを開く場合fopen()
は を使用し、 でファイルfclose()
を開く場合open()
は を使用する必要がありますclose()
。
フォークされた子もファイルにアクセスできる場合、ファイルを使い終わったらどうすればよいでしょうか?
fork()
これは、呼び出しを行った場所 (ファイルを開く前か、開いた後 ) にも依存します。
参照: fork()ing 時にファイル記述子は共有されますか?
参照:man fclose
とman close
open()
およびclose()
は、ファイル記述子を返したり受け取ったりする UNIX syscall であり、 などの他の UNIX syscall とともに使用しますwrite()
。fopen()
およびは、およびのようなもので使用するために、fclose()
を操作する標準 C ライブラリ関数です。ほとんどの場合、後者を使用する必要があります。後者はよりシンプルで、よりクロスプラットフォームです。FILE*
fwrite
fprintf
2 番目の質問については、フォークされた子には親と同じ数値ファイル記述子がありますが、それはコピーです。彼らはそれを閉じることができますが、親と他の子に対しては引き続き開いています。(個人的には、私はファイルを開いておくのは好きではありませんfork()
...私はそのような共有リソースの使用を明示的にするのが好きです。もちろん、パイプは例外です。)