標準I O重定向,流,檔案描述符及程序操作的轉換

2021-08-27 10:40:51 字數 1328 閱讀 4051

對網路程式設計中 常用的 管道技術,標準i/o重定向,流,檔案描述符及程序操作的轉換做簡單總結,不足之處隨後補上

3個資料流 對應的檔案描述符 (int)

標準輸入stdio --需要處理的資料流 0

標準輸出stdout--結果資料流1

標準錯誤輸出 stderr --錯誤訊息流2

當 程序請求乙個新的檔案描述符的時候,系統核心將

最低可用的

檔案描述符 賦給他

file *fp;

int fd;

fd = open("filename", o_rdonly); //fd 為 返回的

最低可用的

檔案描述符

close(fd); //斷開 該 檔案描述符的連線

fgets(buffer, bufsize , stdin);//從標準輸入讀取

fgets(buffer, bufsize , fp);//從檔案中讀取

管道程式設計

int apipe[2];

if( pipe(apipe) == -1 ) //建立管道類似與 open, apipe[0], apipe[1] 分別接 讀資料端和寫資料端

最低可用的

檔案描述符。

oops("pipe");

read(

apipe[0], buffer, bufsize);

write(

1, buffer, bufsize);正確的話,返回bufsize

總結:read,write 對 檔案 描述符 進行操作。 (管道建立時 兩端 對應 相應的檔案描述符)

file *fpout, *fpin;

fpout = fdopen( todc[1] , "w"); // fdopen 將

檔案描述符 (例如 管道兩端) 轉會為 流,即可像操作檔案一樣 操作檔案描述符。 (之前 是 read,write)

fprintf( fpout, "the thing is %s ", buf);

fflush(fpout);

if ( fgets(buf, bufsiz, fpin) == null )

break;

printf("%s", buf);

fclose(fpout);

fclose(fpin);

fpin = fdopen (todc[0], "r")

popen 對

程序 操作,定向為流,即可像操作檔案一樣 操作 程序

file *fp;

fp = popen("ls", "r");

fgets(buf, bufsiz, fp);

pclose(fp);

檔案描述符 輸出重定向

對於核心而言,所有開啟的檔案都是通過檔案描述符引用的。那麼檔案描述符又是什麼呢?通過上圖,我們可以清楚的認識到檔案描述符就是從0開始的小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當開啟乙個檔案或建立乙個檔案,核心向程序返回乙個檔案描述符。linux程序預設情況下會有三個預設開啟的檔案描述符...

檔案描述符與重定向

1 標準輸出和標準錯誤重定向 2 利用 操作符將檔案讀入stdin 3 自定義檔案描述符 4 tee命令 1 例如echo命令就是將指定的字串送到標準輸出,那麼我們就可以結合echo命令將指定字串傳送到指定的檔案 在這裡就是將檔案描述符stdout 1 的內容通過重定向操作符重定向到了test.tx...

Linux 檔案描述符,檔案重定向

檔案重定向 先來說說檔案 當我們開啟乙個檔案時,作業系統為了管理該檔案,會建立乙個資料結構來描述它,記錄他的各種資訊,這個資料結構就是file結構體,乙個file結構體就表示了乙個已經開啟的檔案。程序中使用open函式開啟某個檔案,前提是需要我們將程序與檔案聯絡起來。所以程序pcb中就有乙個 fil...