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가 출력될 수 있습니다.