Linuxのファイル操作、ディレクトリ構造、ファイルのモデル操作関数

ファイル操作は
、この章では、目標を達成するために:
O1を。Linuxファイルシステムのディレクトリ構造を理解し、
O2。Linuxのファイルモデルを理解する;
03。ファイル操作の機能上のLinuxマスター機能;
O4。Linuxシステム熟練したアプリケーション機能は、ファイル操作のプログラミングを行います。
11.1 Linuxのファイルシステム
のために使用されるオペレーティングシステムのほぼすべてのファイルシステムO
ユーザーの構造が類似しているが、木や森採用している
森林の構造
OをUNIXファミリーのシステムでは、ルートディレクトリ「/」である
LinuxのO手紙、最初のファイルパスの概念はありません
ルートディレクトリは「/。」一般的に次のようにルートディレクトリになる
カタログ:
N-ブートに関連するプログラムや設定を開始;
nはビン一般的なLinuxは一般的でありうる、コマンド
、リンク実行ファイルを、またはこれらのファイルの
nは典型的にrootユーザーのために用意しsbinにコマンド;
N- libのシステム一般的に使用されるライブラリー;
N-USRユーザーのインストールファイル、ライブラリ、ライブラリの開発;
N-ルートrootユーザーファイル;
N-ホーム一般的なユーザープロファイルがある;
nは、プロファイルなどのシステムやプログラム;
N-VARシステム・サーバ・データ、 ;ログオン
n個のPROCシステムステータス情報を、
n型システム装置DEV;
N-MNTは、メディアが他のパーティションのマウントポイント(例えば
Windowsパーティション、CD-ROMやフロッピーディスクなど);
N-TMP一時ファイル;
N-ロスト+は、ディスク分離セクタを発見しました。
アプリケーション開発のためのO、我々として提出する必要がある
「流れ」。
O操作ファイル中に、我々は偽のコントロールする必要がある
の思考でポインタを。ファイルの場所へのポインタが、
この位置は、現在の操作ファイルの位置です。これは、
我々は自動的に運転を移動すると、ピンが変化する
11.2ファイル操作関連の機能を
ファイル制御oを
ディレクトリ操作O
ストリームファイルOコントロールを読み取りおよび書き込み
読み取りおよび書き込み操作のファイルoを
11.2.1ファイル制御
oはファイル名前を変更する
n個の#include <stdio.hのを>
N-INT(CONSTのchar * oldpathが、リネーム
CONSTチャー* newpathがある);
Oファイルを削除
#N-に<stdio.h>含む
N-INT削除(CONST文字*パス名)を、
所有者Oは、ファイル変更
Nする#include <SYS /タイプ.H>
N-#<unistd.h>含む
N-int型のchown(CONSTのchar *のパス、uid_t型の
所有者、gid_tのグループを)
Oアクセスにファイルを変更します。
#include N- <SYS / types.h>に
N-#<stat.hで定義されたSYS />含む
N-INTのchmod(CONSTのchar *パス、mode_t
モード);
Oを加えて、マクロまたは組み合わせでも可能である:
N-S_IRUSR /すべてのファイルS_IREAD 、許可を読んでいる方
のn-S_IWUSR / S_IWRITEは、ファイルの所有者への書き込みアクセス権を持っている、
ファイルの所有者の実行権限を持っているのn-S_IXUSR / S_IEXECを
N-S_IRGRPのユーザーグループが読み取りアクセス権を持っている、
N-S_IWGRPのユーザーが書き込み権限グループを持っている、
n型S_IXGRPのユーザーグループが実行許可を持っています、
他のすべてのユーザーがアクセスを読んでいるN-S_IROTH、
N-S_IWOTHは、他のすべてのユーザが書き込みアクセス権を持っている、
N-S_IXOTH他のすべてのユーザーが実行権限を持っています。
ディレクトリ操作11.2.2
O現在の作業ディレクトリ得る
N-位<unistd.h>含む
N-CHAR * GETCWD(CHAR * bufは、size_tの
サイズ);
O現在の作業ディレクトリを変更
N-#含める<unistd.h>
N-CHAR * GETCWD(CONST *パスのchar);
Oオープンディレクトリ
N-する#include <SYS / types.h>に
N-#含める<dirent.h>
N-のopendir DIR *(CONST文字*名);
Oオープンディレクトリを閉じ
N-#<SYS / types.h>に含まれる
N-位<のdirentを含みます.H>
N-INTのclosedirの(DIR * DIR);
Oファイルディレクトリの内容を読み、ディレクトリストリームが参照
シフト後
含む<SYS / types.h>にN-位
N-#含む<dirent.h>
N-構造体dirent * READDIR(DIR * DIR);
N-構造体のdirent {
d_ino N-ino_t;
N-ff_t d_ff;
N署名ショートINT d_reclenであり;
nは、unsigned char型のd_type;
N-チャーd_name [256];
N-};
Oは、指定されたディレクトリが現在のポインタ位置をストリーミング取得
n個の#include <SYS / types.h>に
Nの#include <dirent.h>
N-のtelldir(DIR * DIR)off_tでは、
O指定されたディレクトリストリーム針位置を提供
Nする#include <SYS / types.h>に
#include N- <dirent.h>
オフセットoff_tではのDIR DIR *)N-seekdirボイド;
11.2.3書き込み制御ファイルストリーム
のオープンファイルoは、ファイルストリームポインタを得る
に<stdio.h>含むN-#
N-FILE *のfopen(CONSTを*パスチャー、CONST
のchar *モード);
Oオープンファイルクローズ
Nする#include <stdio.hの>
N-INTのFCLOSE(ファイル*ストリーム);
Oファイルストリームを取得する現在位置へのポインタを読み出す
n個の#include <stdio.hの>
N-長ftellは(ファイル*ストリーム);
O設定ファイルストリームポインタの位置を読み取る
に<stdio.h>含める#N-
(ロングオフセットファイル・ストリームは、n int型のfseekを
そこINT);
O現在の読み出しポインタファイルストリームを解析書き込みの位置に達したか否か
、ファイルの終わり
N-#を含む<stdio.hの>
N-INTのFEOF(ファイル*ストリーム);
O指定したファイル・ストリームから文字読み出し
N-#を含む<stdio.hの>
N-INTのfgetc関数(ファイル*ストリーム);
指定されたファイルストリームに書き込まれた単一の文字O
Nする#include <stdio.hに>
; FPUTCのN-INT(C int型、FILEの*ストリーム)
O指定したファイルストリームから文字列を読む
n個の#include <stdio.hの>
N-CHAR *関数fgets(Sチャー*、int型のサイズ、ファイル
*ストリーム);
Oは、指定されたファイルストリーム列に書き込まれる
N-#に<stdio.h>含む
N-INT fputs(CHAR * S、ファイル・ストリーム)。
O指定したファイル・ストリームから読み取られたデータの一部
N-#は、<stdio.hの>
N-size_t型の関数fread(PTR空隙*、size_tのサイズ、
size_tのnmenb、ファイル*ストリーム);
指定されたファイルストリームにO期間指定データ
N#含める<stdio.hの>
N-size_tのfwriteの(ボイド* PTR、size_tのサイズ、
size_tのnmenb、ファイル*ストリーム);
11.2.4ファイルの読み取りおよび書き込み操作を
指定したファイルを開き、O、およびファイル識別子戻り
Nの#includeには<sys / types.hで>
N-#は、<SYS / stat.hで定義されているが含ま>
N-#は、<のfcntlを含みます。H>
オープンINT N-(INTパス名のconst char型*、
フラグ、モードmode_t);
N-のO_RDONLYオープンファイル読取り専用形式で、
N-O_WRONLY書き込み専用形式でファイルを開き、
N-O_RDWRが読み書き形式でファイルを開き、
N-IF O_CREAT開いているファイルは、ファイルが自動的に作成され、存在しない場合、
n型O_EXCLは、ファイルにエラーが存在する場合、O_CREATと一緒に使用;
nはO_TRUNCが書き込みモードで開かれるとき、ファイルの中身を空にします。
O新しいファイルを作成
N-#を含める<SYS / types.h>に
N-#含める<SYS / stat.hで定義されている>
N-#には、<fcntl.h>
N-int型のレコード生成(のconstのchar *のパス名、
mode_tモード);
O作成し、一時メモリファイル
N-する#include <STDLIB.H>
N-mktempをINT(CHAR *テンプレート)であり;
O閉じるファイル
N-#は、<unistd.h>含む
(INT FD)閉じるN-INTを、
Oは、指定されたファイルから読み込ま
unistd Nする#include <・H>
N-読むssize_tの(FDはint、void *型bufは、size_tの
COUNT)。
O指定されたファイルへのデータ
のN-#は、<unistd.h>含む
N-書くssize_tの(FDのINT、ボイド* bufは、size_tの
COUNT);
Oファイル読み書き位置を変更
#N- <SYS / types.h>に含まれ
てN-する#include <unistd.h>
N-のoff_t型のlseek(off_tではのINT FDは、INT、オフセット
そこ);
O名前導管作成
N-位<unistd.h>含む
N-INT管(filedesがINT [2]);
Oは、名前付きパイプを作成し、文書は、ダクトとみなす
#N- <SYS / types.h>に含まれる
N-位<stat.hで定義されたSYS />含む
N-INTはmkfifo(CONSTチャー*パス名
; mode_tモード)
11.3応用例のトレーニング
我々は、章O例トレーニング「少しスピーチ完了するために
電子辞書ソフトの簡易版であるコード」、。
私たちは、主に、Linuxの理解するためのソフトウェアの開発を借りた
ファイル操作を。電子辞書の簡易版として、私は
、単語を見て追加:以下の二つの機能を提供しなければならない
単語を追加します。
11.3.1プログラム解析
多くの場合、二つのカテゴリーに分類されたファイル、組織内のデータ、について、O
1は、コンピュータのためのデータを提供することですが実行されている、多くの場合、クラスファイルの人間は、バイナリ形式のラインに保存されているような文書
のテキストビューアソフトウェア経由で読み込むことはできませんが、理由その
コンピュータデータフォーマットの内部動作と記憶形式は基本的
に同じなので、コンピュータプログラムを読み取るために容易であった;
他は提供されるヒトの読み取りまたは変更することで、そのようなテキスト
要素は、しばしば、テキストを格納するために使用され、これらのファイルがあるが
あってもよいですテキストビューのソフトウェアを読みますが、メーターのために
コンピュータがあまりにも多くの問題を読んで、頻繁に変換する必要があります。
O形式で格納されているテキストを選択した後、フロー方法が使用
ので、ここでは、標準ライブラリ関数を選択し、より便利
相関関数ファイルストリーム操作の提供
レベル0のソフトウェアがなければなりません。まず、我々は提供する必要がある
機能を読み書きするパッケージのために。第二に、再び提供の上に
辞書操作関数を。最上部の完全なインタフェースで書かれています。
11.3.2書き込みプログラム
O / *関数の定義* /
; O無効FileReadLine(FILE *とのchar * bufはファイル)
OのボイドFileWriteLine(FILE *をファイル、CHAR * BUFを);
O
O int型DictFindWord(FILE *をファイル、CHAR *ワード、CHAR
* EXP);
O無効DictAddWord(FILE *ファイル、Wordのチャー*、char型
*の式)。
O
O INT DecodeCommand(CHAR * cmdbuf、CHAR
* wordbuf、CHAR * expbuf、INT BUFSIZE)。
O INT GetCommandCatagory(チャーcmdcatach)。
O)(PrintHelpInfoを失います。
11.3.3编译与运行
O gccのdictionary.c -o辞書
O ./dictionary
 

おすすめ

転載: blog.csdn.net/qq_38971487/article/details/91492753