C, C 및 Qt에서 stdin 유형 감지
터미널에서 인수 없이 "python"을 실행할 때 Python 대화형 셸은 다음과 같습니다. 출시되었습니다. 그러나 터미널에서 "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 클래스를 제공합니다. 여기에는 stdin이 터미널에 연결되어 있는지 확인하는 데 사용할 수 있는 isTerminal() 메서드가 있습니다.
#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 중국어 웹사이트의 기타 관련 기사를 참조하세요!