我想知道在 stdio 標頭中設定STDIN_FILENOas是否有一個簡單但合乎邏輯的原因,0我在測驗更復雜的代碼時意識到了這一點,這是它的簡短版本:
#include <unistd.h>
#include <stdio.h>
void main(char **argv)
{
char *promt = "Not a terminal";
int inter = 1;
int counter = 1;
isatty(STDIN_FILENO) == 0 ? inter = 0 : inter;
while (TRUE)
{
inter == 1 ? write(1, promt, 16) : inter;
fflush(stdout);
counter ;
}
}
另外,如果可能的話,STDIN_FILENO和之間有什么關系Stream?
uj5u.com熱心網友回復:
STDIN_FILENO是 POSIX 并且必須是0.
https://man7.org/linux/man-pages/man3/stdout.3.html
uj5u.com熱心網友回復:
因為STDIN_FILENO被定義為零每POSIX:
此參考頁面上描述的功能符合 ISO C 標準。此處描述的要求與 ISO C 標準之間的任何沖突都是無意的。本 POSIX.1-2017 卷遵循 ISO C 標準。[選項結束]
具有相關緩沖的檔案稱為流,并被宣告為指向已定義型別 FILE 的指標。fopen() 函式應為流創建某些描述性資料,并回傳一個指標以在所有后續事務中指定流。通常,在 <stdio.h> 標頭中宣告了三個帶有常量指標的打開流,并與標準打開檔案相關聯。
在程式啟動時,應預定義三個流,無需明確打開:標準輸入(用于讀取常規輸入)、標準輸出(用于寫入常規輸出)和標準錯誤(用于寫入診斷輸出)。打開時,標準錯誤流沒有完全緩沖;當且僅當可以確定流不是指互動設備時,標準輸入和標準輸出流才被完全緩沖。
在下面的符號值
<unistd.h>定義應與C語言相關的檔案描述符stdin,stdout和stderr當應用程式啟動:
STDIN_FILENO標準輸入值,
stdin。它的值為 0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/368921.html
上一篇:關于尾呼叫優化的問題
