Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan sama ada Input Standard (stdin) ialah Terminal atau Paip dalam C atau C?

Bagaimanakah Saya Boleh Menentukan sama ada Input Standard (stdin) ialah Terminal atau Paip dalam C atau C?

Linda Hamilton
Lepaskan: 2024-12-05 04:26:10
asal
959 orang telah melayarinya

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

Menentukan Sambungan Terminal atau Paip dalam C atau C

Apabila melaksanakan program, selalunya perlu untuk menentukan sama ada input standard (stdin ) disambungkan ke terminal atau paip. Perbezaan ini penting untuk memahami jenis input yang diterima oleh program dan melaraskan tingkah laku sewajarnya.

Analisis Masalah

Seperti yang diperhatikan, "python" berkelakuan berbeza bergantung pada sama ada ia dipanggil dari terminal atau melalui paip. Ini menunjukkan bahawa program mengesan kehadiran atau ketiadaan sambungan terminal.

Penyelesaian Pengesanan C atau C

Dalam C atau C , fungsi isatty boleh digunakan untuk tentukan sama ada deskriptor fail yang ditentukan merujuk kepada terminal atau tidak. Ia memerlukan deskriptor fail sebagai hujah, yang biasanya fileno(stdin) untuk stdin.

Contoh Kod

Berikut ialah contoh cara menggunakan isatty dalam C atau 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;
}
Salin selepas log masuk

Pada Windows, fungsi isatty dan fileno diawali dengan garis bawah, jadi kodnya menjadi:

#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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan sama ada Input Standard (stdin) ialah Terminal atau Paip dalam C atau C?. 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