| |||||||||||||||||||||||||||||||||||||||||
サイト内検索
カスタム検索
|
ファイル・ディレクトリ [Linux]ファイルは 「内容」 + 「名前」 + 「管理情報」 で構成される。「管理情報」 はファイルシステム内の i ノードと呼ばれるデータブロックに格納 される。 デバイスファイル
資料 [1] にはおよそ上記のように説明がありました。制御端末の話題を考えるときに、Windows ではウィンドウステーションを忘れてはなりません。WinSta0 というウィンドウステーションに作成されたプロセスのみがコンソールとの対話を許可されるからです。しかし、[1] をざっと見る限りウィンドウステーションという概念自体 Linux にはないのかもしれません。(そもそもウィンドウハンドルなんてものも無いのでしょうね) システムコール
ファイルディスクリプタ
ディレクトリopendir でディレクトリをオープンし、そのディレクトリの情報を readdir で読む。プロトタイプは以下: DIR *opendir (const char *); struct dirent *readdir (DIR *); 特定のディレクトリ内のファイル・ディレクトリを列挙するには次のようにする。 #include <unistd.h> ただし、ここでは lstat の戻り値をチェックしていないがこれはするべき。Windows 上で実行すると上記のコードでは
lstat
が失敗するためディレクトリであるかファイルであるか判定できなかった。(Windows では FindFirstFile を使い、引数の
WIN32_FIND_DATA 型の構造体の dwFileAttributes フラグをチェックする) エラーコードは 2 (No such
file or directory) だったので lstat にフルパスを渡したら成功した。この点で Linux 上と Windows
上では動作が異なったので注意するべきだろう。 参考資料[1] ニール・マシュー&リチャード・ストーンズ著 葛西訳 『Linux プログラミング 例題で学ぶ UNIX プログラミング環境のすべて』, SOFTBANK |
||||||||||||||||||||||||||||||||||||||||
|
© 2008-2010 小山圭介 All Rights Reserved.
|
|||||||||||||||||||||||||||||||||||||||||