ヘッダ | fcntl.h、sys/types.h、sys/stat.h | ||||||||||||||||||||||
書式 | int open(const char *path, int mode, [mode_t creat_mode]) | ||||||||||||||||||||||
引数 | path … ファイル名 mode … オープンするファイルに許可を与えるモード creat_mode … modeにO_CREATを指定した場合に設定できるオープンするファイルのモード(省略可能) modeで設定できる値は、下記「※1」の3つのいずれか1つと、「※2」の任意の値を「|(論理和)」で結んだものとなる。 ※1
※2
modeにO_CREATを指定した場合、3番目の引数で「※3」のcreat_modeを指定できる。 ※3
|
||||||||||||||||||||||
戻り値 | 成功:ファイルデスクリプタ(そのファイルを一意に識別できる数値) 失敗:-1 |
||||||||||||||||||||||
解説 | ファイルをオープンし、ファイルデスクリプタを返却する低水準入出力関数。 |
/****************************************************************************/ #include<stdio.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #define BUF_SIZE 512 int main(void) { // 変数定義 int fd1, fd2; int byte_num; char buf[BUF_SIZE]; // 変数初期化 fd1 = 0; fd2 = 0; byte_num = 0; memset(buf, '\0', BUF_SIZE); // ファイルのオープン fd1 = open("./file1", O_RDONLY); // 読み込み専用でファイルを開く fd2 = open("./file2", O_WRONLY); // 書き込み専用でファイルを開く if(fd1 == -1 || fd2 == -1) // ファイルオープン失敗 { fprintf(stdout, "ファイルオープンエラー\n"); return 1; } // ファイルから5バイト読み込み byte_num = read(fd1, &buf[0], 5); // ファイルから5バイト読み込み if(byte_num == -1) // ファイル読み込み失敗 { fprintf(stdout, "ファイル読み込みエラー\n"); return 1; } fprintf(stdout, "file1から%dバイト読み込みました。\n", byte_num); fprintf(stdout, "読み込んだ文字列:%s\n", buf); // ファイルへ3バイト書き込み byte_num = write(fd2, &buf[0], 3); if(byte_num == -1) // ファイル書き込み失敗 { fprintf(stdout, "ファイル書き込みエラー\n"); return 1; } fprintf(stdout, "file2から%dバイト書き込みました。\n", byte_num); buf[byte_num] = '\0'; fprintf(stdout, "書き込んだ文字列:%s\n", buf); // ファイルを閉じる close(fd1); close(fd2); return 0; } /****************************************************************************/
プログラムで使用するfile1.txtの内容(10バイト)
--------------------------
abcdefghij
--------------------------
Copyright(c) 2010 , cgengor
このWebページの内容を無断で複製または転載することを禁じます。
このWebページの情報を利用することにより発生したいかなる損害について著作権保有者はいっさいの責任を負いません。