檢測C、C 和Qt 中的stdin 類型
在終端中執行不帶參數的「python」時,Python 互動式shell 為推出。但是,當從終端執行“cat | python”時,未啟用交互模式,這表示 stdin 連接到管道。本文探討如何使用 isatty 函數來偵測 C、C 和 Qt 中的 stdin 類型。
函數概述
stdio.h 中的 isatty 函數決定是否檔案描述子連接到終端。當應用於 fileno(stdin) 時,它會檢查 stdin 是否是終端(例如控制台或終端模擬器)或不是終端(例如檔案或管道)。
C / C 範例
在C 或C 語言中,使用以下程式碼偵測stdin類型:
#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; }
Qt 範例
Qt 提供了一個繼承自QIODevice的 KStdin 類。它有一個 isTerminal() 方法,可用於檢查 stdin 是否連接到終端:
#include <QStdin> int main() { KStdin stdinDevice; if (stdinDevice.isTerminal()) qDebug() << "stdin is a terminal"; else qDebug() << "stdin is a file or a pipe"; return 0; }
利用 C 或 C 中的 isatty 或 Qt 中的 KStdin,可以偵測 stdin 是否連接到終端。連接到終端或管道,為根據輸入來源控製程式行為提供有價值的資訊。
以上是在 C、C 和 Qt 中如何偵測 stdin 是終端還是管道?的詳細內容。更多資訊請關注PHP中文網其他相關文章!