首頁 >後端開發 >C++ >如何確定標準輸入 (stdin) 是 C 或 C 中的終端還是管道?

如何確定標準輸入 (stdin) 是 C 或 C 中的終端還是管道?

Linda Hamilton
Linda Hamilton原創
2024-12-05 04:26:10940瀏覽

How Can I Determine if Standard Input (stdin) is a Terminal or a Pipe in C or C  ?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn