日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下的各个语言中stdin,stdout和stderr理解

發布時間:2025/3/15 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下的各个语言中stdin,stdout和stderr理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在linux中經常會看到stdin,stdout和stderr,這3個可以稱為終端(Terminal)的標準輸入(standard input),標準輸出( standard out)和標準錯誤輸出(standard error)。

通過man stdin查看手冊,可以看到它們都是在stdio.h中定義的。 當linux開始執行程序的時候,程序默認會打開這3個文件流,這樣就可以對終端進行輸入輸出操作。下面用c語言模擬下這3個文件流。

標準輸入(standard input)

在c語言中表現為調用scanf函數接受用戶輸入內容,即從終端設備輸入內容。也可以用fscanf指明stdin接收內容。 標準輸入的文件標識符為0。

#include <stdio.h>intmain(void) {charstr[10];scanf("%s", str);fscanf(stdin, "%s", str);return0; }

標準輸出(standard out)

在c語言中表現為調用printf函數將內容輸出到終端上。使用fprintf也可以把內容輸出到終端上。標準輸出的文件標識符為1

#include <stdio.h>intmain(void) {printf("%s\n", "hello");fprintf(stdout, "%s\n", "hello");return0; }

標準錯誤輸出(standard error)

標準錯誤和標準輸出一樣都是輸出到終端上, 標準錯誤輸出的文件標識符為2。筆者更傾向于從語義上分析:在程序處理的時候,正常的信息輸出作為標準輸出,產生錯誤的輸出作為標準錯誤輸出。這樣在重定向的時候,就可以將正常的信息和錯誤的信息重定向到不同的文件。

#include <stdio.h>intmain(void) {printf("%s\n", "hello");fprintf(stderr, "%s\n", "error");return0; }

上面這個程序分別往終端和stderr輸出了信息,編譯這個程序生成二進制文件a.out,使用下列命令運行,重定向輸出。

./a.out 1>log.txt 2>error.txt

這樣就把輸出的內容hello保存到了log.txt文件,錯誤的信息error保存到了error.txt文件。(也就是通過管道重定位)

在c語言里,也可以使用freopen函數重定向輸出流

#include <stdio.h>intmain(void) {FILE*out = freopen("out.txt", "w", stdout);printf("%s\n", "hello");return0; }

上例代碼編譯執行后,終端上并沒輸出內容,而是保存到了out.txt這個文件了。

?

總結

總的來說,stdin,stdout和stderr還是和終端有密切關系,通常在生產環境時,會將這3個流重定向到其它文件。

總結

以上是生活随笔為你收集整理的linux下的各个语言中stdin,stdout和stderr理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。