Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxについて >> Linuxでopen関数とfopen関数を識別する方法

Linuxでopen関数とfopen関数を識別する方法

  

open関数とfopen関数はLinuxシステムの呼び出し関数です。それらは似ているため、多くの人がそれらを混同してしまうでしょう。理解している友人が理解するようになることができます。機能
ログイン

1ファイルシステムバッファ

ファイル・システム・バッファがある:・メモリを開く'緩衝'、プログラムで使用される各ファイルの場合、リードファイルが操作されると、データがディスクファイルからメモリ「バッファ」に読み出され、次に受信変数がメモリ「バッファ」から読み出される。ファイルの書き込み操作を実行するときは、まずデータをメモリの「バッファ」に書き込み、次にメモリが「いっぱい」になるまで待ってからファイルに書き込みます。メモリ "buffer"のサイズが外部メモリの実際の操作数に影響することがわかり、メモリ "buffer"が大きいほど、実行される操作が少なくなり、実行速度が速くなり、効率が上がります。高いです。一般に、ファイル "buffer"のサイズはランダマイザによって決定されます。

fopen、fclose、fread、fwrite、fgetc、fgets、fputc、fputs、freopen、fseek、ftell、rewindなど。

2.アンバッファファイルシステム

バッファファイルシステムは、ファイル構造ポインタによってファイルを管理し、ファイルポインタを通じてファイルにアクセスし、文字、文字列、フォーマットされたデータ、およびバイナリデータの読み書きを行うことができます。非バッファファイルシステムは、オペレーティングシステムの機能を通してファイルを読み書きするためにオペレーティングシステムに依存しており、システムレベルの入出力であり、ファイル構造ポインタを持たず、バイナリファイルの読み書きしかできませんが、効率的で高速です。 ANSI規格にはバッファされていないファイルシステムが含まれていないため、選択しないことをお勧めします。この本は簡単な紹介です。開く、閉じる、読み取る、書き込む、getc、getchar、putc、putcharなど

openはシステムコール、ファイルハンドルはファイル記述子テーブル内のファイルのインデックス、fopenはCライブラリ関数で、ファイル構造へのポインタを返します。

fopenは、ANSIC標準のC言語ライブラリ関数です。異なるシステムでは、異なるカーネルAPIを呼び出す必要があります。

linuxのシステム関数は開いており、fopenはそのラッパー関数です。 。参考のためにのみ。

ファイルディスクリプタはLinuxのコンセプトで、Linuxのすべてのデバイスはファイルとして動作します。ネットワークソケット、ハードウェアデバイスなどもちろん、操作ファイルも含みます。

fopenは標準のc関数です。 linuxのファイルハンドルの代わりにファイルストリームを返します。

デバイスファイルはストリーミングファイルとして使用することはできません、openのみです。

fopenは通常のファイルを操作するために使用され、バッファを持っています。 >

一般的にfopenで通常のファイルを開き、openでデバイスファイルを開きます。

fopenが標準のcで、openがLinuxシステムコールです。

レベルが異なります。

fopenポータブル、オープンできません

3.パフォーマンス

fopenとopenの主な違いは、fopenがユーザーモードでキャッシュを持っていることです。また、書き込み時間はユーザーモードとカーネルモードの間の切り替えを減らしますが、openは毎回カーネルモードとユーザーモードの間を切り替える必要があります;

は次のように動作します。ファイルにアクセスするには、fopenシリーズの機能はopenシリーズを直接呼び出すよりも高速です;

(2)ランダムアクセスファイルがfopenよりも高速にオープンされている場合。

古典的な答え:

前者は低レベルのIO、後者は高度なIOです。

前者はファイルポインタを返すファイルディスクリプタ(ユーザプログラム領域内)を返します。

前者はバッファなし、後者はバッファ付きです。

前者はread、writeなどで動作し、後者はfread、fwriteなどで動作します。

後者は前者に基づいており、ほとんどの場合、後者に基づいています。

上記はopenとfopenの違い、2つの違いは主にバッファの違い、fopenはbufferとopen noの違い、そしてそれらのレベルも異なり、fopenは移植でき、openはできません。
zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved