Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 콘솔 입력·출력·오류 스트림의 리디렉션 여부 확인하기

C#에서는 System.Console 클래스가 제공하는 정적 속성들을 활용하면 콘솔의 표준 입력, 표준 출력, 표준 오류 스트림이 리디렉션되었는지 여부를 손쉽게 확인할 수 있습니다.

각각의 역할은 다음과 같습니다.

  • Console.IsInputRedirected — 표준 입력(stdin)이 파일이나 파이프 등으로 리디렉션되었는지 확인합니다.
  • Console.IsOutputRedirected — 표준 출력(stdout)이 리디렉션되었는지 확인합니다.
  • Console.IsErrorRedirected — 표준 오류(stderr) 스트림이 리디렉션되었는지 확인합니다.

아래 예제를 통해 각 속성의 사용 방법을 살펴보겠습니다.

1. 입력 리디렉션 여부 확인

콘솔의 입력이 리디렉션되었는지 확인하는 코드는 다음과 같습니다.

using System;
public class Demo {
    public static void Main(string[] args) {
        Console.WriteLine("Input Redirected? = " + Console.IsInputRedirected);
    }
}

실행 결과

Input Redirected? = False

일반적인 콘솔 환경에서 프로그램을 실행하면 입력이 리디렉션되지 않았으므로 False가 출력됩니다.

2. 출력 리디렉션 여부 확인

콘솔의 출력이 리디렉션되었는지 확인하는 코드는 다음과 같습니다.

using System;
public class Demo {
    public static void Main(string[] args) {
        Console.WriteLine("Output Redirected? = " + Console.IsOutputRedirected);
    }
}

실행 결과

Output Redirected? = False

출력 결과를 파일로 저장하거나 파이프로 전달하지 않는 한 False가 반환됩니다.

3. 오류 리디렉션 여부 확인

콘솔에서 오류 스트림이 리디렉션되었는지 확인하는 코드는 다음과 같습니다.

using System;
public class Demo {
    public static void Main(string[] args) {
        Console.WriteLine("Error Redirected on Console? = " + Console.IsErrorRedirected);
    }
}

실행 결과

Error Redirected on Console? = True

실행 환경에 따라 오류 스트림이 이미 리디렉션된 상태라면 True가 출력될 수 있습니다.