Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Boleh Mengesan Sama ada stdin ialah Terminal atau Paip dalam C, C dan Qt?

Bagaimana Saya Boleh Mengesan Sama ada stdin ialah Terminal atau Paip dalam C, C dan Qt?

Linda Hamilton
Lepaskan: 2024-12-09 14:32:12
asal
404 orang telah melayarinya

How Can I Detect Whether stdin is a Terminal or a Pipe in C, C  , and Qt?

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan