Chapter 2, File I/O
#Linux_System_Programming
ファイルを扱う
すべてはファイルなのでFile I/Oは重要
Chapter 4, Advanced File I/Oでより進んだfile I/O interface
Chapter 8, File and Directory Management
内容メモ
ファイルの読み書きの前にopenされなければならない
カーネルはプロセスごとにfile tableを管理する
ファイルディスクリプタでインデックスづけられる
プロセスごとに開けるファイル数の上限は決まっている 1024とか
0,1,2は予約されている
ファイルディスクリプタはRegular files以外も参照できる
デフォルトで子プロセスは親プロセスのfile tableのコピーを受け取る
クローズなどの操作は共有されない
スレッドのようにそれも共有することが可能 → Chapter 5, Process Management
TOC
Opening Files
Reading via read()
Writing with write()
Synchonized I/O
Direct I/O
Closing Files
Seeking with lseek()
Positional Reads and Writes
Truncating Files
Multiplexed I/O
Kernel Internals
Conclusion
内容
Opening Files
Reading via read()
Return Values
0 < r < lenなるrを返すこともある
0を返す場合はEOFで、単にまだ読み込み準備ができていないときはreadがブロックする
fdがnon-blocking modeで開かれていないことを前提とする
ある種のエラーは回復することができる
Reading All the Bytes
Nonblocking Reads
no data availableなときにread()呼び出しがブロックして欲しくない時がある
呼び出しはすぐに戻ってきて、no data availableであることを示してほしい
このような動作をNon-blocking I/Oという
Other Error Values
Size Limits on read()
Writing with write()
Synchonized I/O
Direct I/O
Closing Files
Seeking with lseek()
Positional Reads and Writes
Truncating Files
Multiplexed I/O
Kernel Internals
Conclusion