stdin,stdout,stderr和重定向

2021-06-17 15:01:58 字數 944 閱讀 8443

c程式自動開啟3個檔案,標準輸入,標準輸出和標準錯誤輸出。預設情況下分別指向鍵盤,顯示器,顯示器。

這裡的檔案指的是指向file的指標。file是stdio.h中定義的一種派生型別。file型別指標,指向乙個關於檔案資訊的資料報,其中包括檔案i/o使用的緩衝區的資訊。

stdin,stdout,stderr都是file*型別的物件,它們都是常量。分別指向鍵盤,顯示器,顯示器。也就是c程式啟動時作業系統流環境負責開啟的3個檔案(標準輸入,標準輸出和標準錯誤輸出)。

unix,linux,dos可以重定向輸入和輸出。通俗來說,輸入重定向讓我們可以使用檔案代替鍵盤作為輸入,輸出重定向可以讓我們用檔案代替顯示器作為輸出。

檔案編譯之後,有乙個執行檔案***.exe(dos下),現在有乙個text.txt檔案,通過命令:***x < text 把***x的輸入定向到text檔案,也就是從text檔案中讀取資料作為***x的輸入。

< 符號是unix,linux,dos的重定向運算子,該運算子把stdin流和text檔案關聯起來,將該檔案的內容匯入***x程式,***x程式只負責從流中提取資料,而不關心資料是從何而來。

(注:unix,linux,dos下《兩側的空格是可選的)

與輸入重定向類似,>可進行輸出重定向。

輸出重定向可和輸入重定向同時使用,重定向運算子的順序無關緊要。比如另有檔案text1.txt, 

命令:***x < text >text1,text作為輸入,然後***x的輸出重定向到text1。

總結,重定向遵循的規則如下:

1.重定向運算子講乙個可執行程式與乙個資料檔案連線起來。它不能連線兩個可執行程式,也不能連線兩個檔案。

2.使用重定向運算子時,輸入只能定向到乙個檔案,即輸入不能來自乙個以上的檔案。輸出同理。

3.不要把乙個程式的輸入和輸出定向到乙個檔案,如 ***x < text >text,>text 使原始的text檔案在用於輸入之前被截斷為零。

Linux Linux printf 輸出重定向

方法一 include include include include include intmain 方法二 include include include intmain 到這裡我們就可以輕鬆解決 prinft 不輸出到螢幕的問題了.不外乎兩種情況.第1 標準輸出被重定向了.第2 輸出緩衝區的問...

Linux Linux printf 輸出重定向

方法一 include include include include include intmain 方法二 include include include intmain 到這裡我們就可以輕鬆解決 prinft 不輸出到螢幕的問題了.不外乎兩種情況.第1 標準輸出被重定向了.第2 輸出緩衝區的問...

shell入門 uniq去重複和tee重定向

命令 uniq 選項 c 顯示重複數量 說明 去重複,不sort多個功能,顯示幾個重複 命令 tee 說明 重定向加上雙重輸出 root wangshaojun cat 2.txt12 2233 41ac5 root wangshaojun uniq 2.txt 消除順序挨著的重複段12 341ac...