STDIN FILENO 與stdin的區別

2021-08-21 00:27:38 字數 1388 閱讀 1555

1.stdin_fileno的作用

stdin_fileno屬於系統api介面庫,其宣告為 int 型,是乙個開啟檔案控制代碼,對應的函式主要包括 open/read/write/close 等系統級呼叫。

作業系統一級提供的檔案api都是以檔案描述符來表示檔案。stdin_fileno就是標準輸入裝置(一般是鍵盤)的檔案描述符。

例:(一次乙個位元組地從標準輸入拷貝到標準輸出)

#include

intmain

(void)

stdin_fileno→→&c(儲存器位置)→→stdout_fileno

2.區別

1)資料型別不一致:

stdin型別為 file*

stdin_fileno型別為 int

使用stdin的函式主要有:fread、fwrite、fclose等,基本上都以f開頭

使用stdin_fileno的函式有:read、write、close等

2)stdin等是file *型別,屬於標準i/o,高階的輸入輸出函式。在。

stdin_fileno等是檔案描述符,是非負整數,一般定義為0, 1, 2,屬於沒有buffer的i/o,直接呼叫系統呼叫,在。

3)stdin_fileno 是標準輸入的檔案描述符

詳見/usr/include/unistd.h

**:/* standard file descriptors. */

#define stdin_fileno 0 /* standard input. */

#define stdout_fileno 1 /* standard output. */

#define stderr_fileno 2 /* standard error output. */

4)層次不一樣。stdin 屬於標準庫處理的輸入流,其宣告為 file 型的,對應的函式前面都有f開頭,如fopen/fread/fwrite/fclose 標準庫呼叫等

stdin_fileno屬於系統api介面庫,其宣告為 int 型,是乙個開啟檔案控制代碼,對應的函式主要包括 open/read/write/close 等系統級呼叫。

標準庫內封裝了系統 api 呼叫,如 fread 內部實現呼叫 read。

5)作業系統一級提供的檔案api都是以檔案描述符來表示檔案。stdin_fileno就是標準輸入裝置(一般是鍵盤)的檔案描述符。

6)為什麼乙個整形fd(stdin_fileno=0)就可以代表乙個開啟的檔案呢?

和我們的手機號是類似的,手機號只是乙個9位數的整形,但是在移動通話網路裡,它就可以用來區分不同的手機終端。

標準c++一級提供的檔案操作函式庫都是用file*來表示檔案,stdin就是指向標準輸入裝置檔案的file*

std 的概念與作用

std 當中std是命名空間,防止反覆。比 如說很多人給函式取名可能都叫f1 你使用的時候就可能造成問題。如果各人均把自己的f1 放進自己的命名空間。我們在使用的時候帶上命名空間就不會有問題。主要是起到了資源管理的作用。以下是乙個樣例 有兩個軟體公司a公司和b公司,他們都是用c 語言開發他們的產品。...

C 命名空間與std

本文參考 1.命名空間是啥 舉個栗子,班上有學生 張三 李三 王三 如果你大吼一聲 三兒 肯定三個人一起懵圈地看著你,為了避免這麼尷尬的情況發生,機智的中國人發明了 姓氏 你先去張家族,再喊 三兒 那大家都知道是張三了。同理,調取乙個變數a,就相當於喊了一聲 三兒 為了避免誤會,你得給他加個姓氏,也...

stdin和STDIN FILENO的區別

在unix系統呼叫中,標準輸入描述字用stdin,標準輸出用stdout,標準出錯用stderr表示,但在一些呼叫函式,引用了stdin fileno表示標準輸入才,同樣,標準出入用stdout fileno,標準出錯用stderr fileno.請問,他們有什麼區別嗎?stdin等是file 型別...