對網路程式設計中 常用的 管道技術,標準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...