Mengesan stdin Type dalam C, C dan Qt
Apabila melaksanakan "python" tanpa argumen dalam terminal, shell interaktif Python ialah dilancarkan. Walau bagaimanapun, apabila "cat | python" dilaksanakan daripada terminal, mod interaktif tidak didayakan, menunjukkan bahawa stdin disambungkan ke paip. Artikel ini meneroka cara untuk mengesan jenis stdin dalam C, C dan Qt menggunakan fungsi isatty.
Gambaran Keseluruhan Fungsi
Fungsi isatty dalam stdio.h menentukan sama ada a deskriptor fail disambungkan ke terminal. Apabila digunakan pada fileno(stdin), ia menyemak sama ada stdin ialah terminal (cth., konsol atau terminal emulator) atau tidak (cth., fail atau paip).
Contoh C / C
Dalam C atau C , gunakan kod berikut untuk mengesan stdin jenis:
#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; }
Contoh Qt
Qt menyediakan kelas KStdin yang mewarisi daripada QIODevice. Ia mempunyai kaedah isTerminal() yang boleh digunakan untuk menyemak sama ada stdin disambungkan ke terminal:
#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; }
Dengan menggunakan isatty dalam C atau C atau KStdin dalam Qt, adalah mungkin untuk mengesan sama ada stdin adalah disambungkan ke terminal atau paip, menyediakan maklumat berharga untuk mengawal tingkah laku program berdasarkan sumber input.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Mengesan Sama ada stdin ialah Terminal atau Paip dalam C, C dan Qt?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!