C和C 中的標準輸出和標準錯誤輸出

2021-07-13 03:57:48 字數 805 閱讀 5213



c中的標準輸出和標準錯誤輸出是stdout和stderr兩個"file *"型別的檔案指標。

fprintf(stdout,"stdout: hello world\n");

fprintf(stderr,"stderr: hello world\n");

c++中的則是cout和cerr兩個output stream。

cout << "cout: hello world\n";

cerr << "cerr: hello world\n";

"1>"重定向標準輸出:

#./a.out 1>info

通過上面的方法c語言中的stdout和c++中的cout,被重定向到指定檔案。

"2>"重定向標準錯誤輸出:

#./a.out 2>info_err

通過上面的方法c語言中的stderr和c++中的cerr,被重定向到指定檔案。

"2>&1"讓標準錯誤輸出重定向到標準輸出的位置:

#./a.out 1>info 2>&1

cmd1      #./a.out 1> info

cmd2      #./a.out 1 > info

比較上面兩條語句,它們的區別是第二句在"1"和">"之間多了乙個空格。開啟各自產生的info檔案,會發現內容是一樣的。這樣很容易誤認為兩句話是完全等價的,其實不然。

cmd1是貨真價實的把stdout重定向到info。cmd2是把"1"作為引數傳遞給了a.out(printf出main函式的argv[1]就知道了)。然後cmd2預設把標準輸出重定向了。 所以cmd1和cmd2才有相同的執行效果。

標準輸入,標準輸出和標準錯誤

當我們使用檔案描述符進行操作時,需要操作標準輸入 標準輸出 標準錯誤,可以包含如下標頭檔案 include這個標頭檔案中定義了標準裝置 standard file descriptors.define stdin fileno 0 standard input.define stdout filen...

Linux標準輸入 標準輸出和標準錯誤重定向

shell會自動為我們開啟和關閉0 1 2這三個檔案描述符,我們不需要顯式地開啟或關閉它們。標準輸入是命令的輸入,預設指向鍵盤 標準輸出是命令的輸出,預設指向螢幕 標準錯誤是命令錯誤資訊的輸出,預設指向螢幕。標準輸入是檔案描述符0。它是命令的輸入,預設是鍵盤,也可以是檔案或其他命令的輸出。標準輸出是...

linux中的標準輸入 標準輸出 標準錯誤

在shell中執行命令時,每個程序都和三個開啟的檔案相聯絡,並使用檔案描述符來引用這些檔案。輸入檔案 標準輸入 0 預設是鍵盤輸入,也可以是檔案或其他命令的輸出 輸出檔案 標準輸出 1 預設是螢幕,也可以是檔案 錯誤輸出檔案 標準錯誤 2 預設是螢幕,也可以是檔案 linux系統中實際上有12個檔案...