輸入與輸出

1、文件描述符(file descriptor)

文件描述符(file descriptor)通常是一個小的非負整數

2、標準輸入、標準輸出、標準出錯

按慣例,每當運行一個新程序時,所有的shell都將爲其打開三個文件描述符:標準輸入(standard input)、標準輸出(standard output)和標準出錯(standard error)。

3、不用緩衝的I/O

函數open、read、write、lseek和close提供了不用緩衝的I/O,這些函數都使用文件描述符。

4、標準I/O

標準I/O函數提供一種對不用緩衝I/O函數的帶緩衝的接口。<stdio.h>中包含了所有標準I/O函數的原型。

#include <stdio.h>
#include <unistd.h>

#define BUFFSIZE 4096

int main()
{
    char buf[BUFFSIZE];
    int n = 0;

    while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
    {
        if (write(STDOUT_FILENO, buf, n) != n)
        {
            printf("write error\n");
        }
    }
    
    if (n < 0)
    {
        printf("read error\n");
    }
}


代碼知識:

1、STDIN_FILENO和STDOUT_FILENO定義在<unistd.h>頭文件中,它們指定了標準輸入和標準輸出的文件描述符,它們的典型值爲0和1。爲了可讀性,我們還是使用這兩個名字。

2、read返回讀取的字節數。如果到達文件尾,read返回0,程序停止。如果發生一個錯誤,read返回-1。

3、如果返回的數值小於想要讀取的數值,這並不是一個錯誤。這有可能是我們接近文件結束(end-of-file),或者從一個管道(pipe)中讀取,或者從終端讀取,也有可能是被一個信號中斷的緣故。

4、通過ctrl+D 可以鍵入文件結束字符。

5、通過以下方式可以將infile文件的內容複製到outfile文件中去

./a.out <infile > outfile

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章