C言語システムコール-read

readシステムコール

概要

readはファイルディスクリプタが示すファイルから指定バイト数(count)を上限としてバッファ(bug)にデータを読み込みます。

戻り値は読み込んだデータのバイト数が返され、ファイルの終端(EOF)を超えてreadすると戻り値を0とします。

端末やソケットなどからの読み込みにおいて、データが到着するまで処理を待ち合わせます。


サンプルプログラム

標準入力からデータを読み込みます。


#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>

int
main(void)
{
    ssize_t rnum = 0;
    ssize_t wnum = 0;
    char buf[BUFSIZ] = {"¥0"};

    rnum = read(0, buf, sizeof(buf));
    if(rnum < 0){
        printf("Error: read(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    wnum = write(1, buf, rnum);
    if(wnum < 0){
        printf("Error: write(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    if(rnum != wnum){
        printf("Error: read/write(%d) %s\n", errno, strerror(errno));
        return(-1);
    }

    return(0);
}


関連ページ