>백엔드 개발 >C++ >C/C /Qt에서 표준 입력(stdin)이 터미널인지 파이프인지 어떻게 확인할 수 있습니까?

C/C /Qt에서 표준 입력(stdin)이 터미널인지 파이프인지 어떻게 확인할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-09 05:25:16738검색

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

C/C /Qt에서 Stdin이 터미널인지 파이프인지 아는 것

특정 시나리오에서는 다음에 연결된 stdin을 구별하는 것이 중요합니다. 터미널이나 파이프. 예를 들어, 터미널에서 Python을 시작할 때 대화형 모드는 stdin이 터미널인지 파이프인지에 따라 영향을 받습니다.

C/C 감지

확인하려면 stdin의 특성상 isatty 함수를 사용하세요.

#include <stdio.h>
#include <io.h>

if (isatty(fileno(stdin))) {
  printf("stdin is a terminal\n");
} else {
  printf("stdin is a file or a pipe\n");
}

Windows에서는 해당 접두사 함수를 사용하세요: _isatty, _fileno.

Qt의 감지

Qt는 QFileDevice::isSequential 메서드를 제공합니다.

#include <QFileDevice>

if (stdin->isSequential()) {
  // stdin is a pipe
} else {
  // stdin is a terminal
}

이 접근 방식은 순차 장치가 일반적으로 파이프 또는 기타 검색할 수 없는 소스입니다.

위 내용은 C/C /Qt에서 표준 입력(stdin)이 터미널인지 파이프인지 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.