openは、指定されたファイル名のファイルを開くUNIXシステムコール・・・。
これまで、標準Cライブラリfopenでファイルを開いてきたが、これは高水準入出力関数であり、バッファリングなどの補助的な機能を有する・・・。
一方、システムコールのopenは低水準入出力関数で、直接入出力装置にアクセスする・・・。
これらの関数には一長一短があるが、まずはopenでファイルを開くことにする・・・。
openを使うには、sys/types.h, sys/stat.h, fcntl.hをインクルードする・・・。
また、openしたファイルを閉じるにはcloseシステムコールが要るので、
unistd.hもインクルードする・・・。
fopenでは、FILE構造体のポインタ、いわゆる"ファイルポインタ"が返ってきたが、
openでは、ファイルなどを識別する番号、"ファイルディスクリプタ"が返ってくるので、そのためにint型変数fdを用意・・・。
openで"test.txt"を開く・・・。
O_RDONLYは読み込み専用という意味のフラグ・・・。
戻り値のファイルディスクリプタはfdに格納・・・。
戻り値が-1の時は、失敗なのでエラー処理・・・。
成功なら、fdの値を出力・・・。
closeでfdの示すファイルを閉じる・・・。
$ ./open fd = 3 $
test.txtが存在するなら、上のようにfdが出力される・・・。
存在しない場合は、
$ ./open open error! $
エラー・・・。