在C 或C 語言中確定終端或管道連接
執行程序時,常常需要判斷標準輸入(stdin )連接到終端或管道。這種區別對於理解程式接收的輸入類型並相應地調整行為至關重要。
問題分析
據觀察,「python」的行為有所不同,取決於是否它是從終端或透過管道調用的。這表示程式檢測是否有終端連線。
C 或 C 偵測方案
在 C 或 C 中,函數 isatty 可用來決定指定的檔案描述子是否引用終端。它接受一個檔案描述子作為參數,對於 stdin 通常是 fileno(stdin)。
範例程式碼
這裡是如何在C 使用isatty 的範例或C :
#include <stdio.h> #include <io.h> // For _isatty and _fileno on Windows int main() { if (isatty(fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); } return 0; }
在Windows 上,函數isatty 和fileno的字首為底線,所以程式碼變成:
#include <stdio.h> #include <io.h> int main() { if (_isatty(_fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); } return 0; }
以上是如何確定標準輸入 (stdin) 是 C 或 C 中的終端還是管道?的詳細內容。更多資訊請關注PHP中文網其他相關文章!