입출력 리디렉션
표준 입력 또는 표준 출력의 소스 또는 대상을 변경하는 기술을 의미한다
이를 통해 프로그램은 사용자 입력이나 출력 대신 파일, 다른 프로세스의 출력 등을 사용할 수 있다
리디렉션은 주로 커맨드 라인 인터페이스(Command Line Interface)에서 사용된다
명령어를 실행할 때 < 및 > 기호를 사용하여 표준 입력 및 표준 출력을 파일로 리디렉션 할 수 있다
입출력 리디렉션 방법
stdin: < 문자
stdout: > 문자
stderr: 2> 문자(2번째 출력 ex. 에러 내용 출력)
ex) a.exe < input.txt > output.txt 2> error.txt
입출력 리디렉션 예시
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int ans;
scanf("%d", &ans);
printf("%d", ans);
return 0;
}
// 커맨드 라인 인터페이스에 작성
./a.exe < input.txt > output.txt 2> error.txt
커맨드 라인 인자(Command Line Arguments)
프로그램이 실행될 때 프로그램에 전달되는 값들을 나타낸다
이 값들은 프로그램이 시작될 때 명령줄에서 입력되고
주로 프로그램의 동작을 제어하거나 초기화하는 데 사용된다
커맨드 라인 인자(Command Line Arguments) 사용법
커맨드라인 쉘에서 프로그램을 실행할 때, 인자들을 넣어줄 수 있다
예를 들어, 아래의 커맨드 라인 인터페이스에서 작성한 "arg1", "arg2", "arg3"은 커맨드 라인 인자들이다
./my_program arg1 arg2 arg3
그리고 이렇게 전달된 인자들은 main() 함수의 매개변수에서 읽어올 수 있어짐.
int main(int argc, char *argv[])
여기서
argc: 전달 받은 인자의 개수. 실행 파일명(a.exe)까지 포함된 개수
argv: array of pointer to char. argv[argc + 1]로 생성된다
argv[0]는 실행파일명(a.exe)을 입력해야 하고
argv[argc]에는 NULL 포인터가 저장된다
따라서 아래와 같이 작성한다면
./filecopier.exe list.txt cloned_list.txt
argc: 3
argv[0]: filecopier.exe
argv[1]: list.txt
argv[2]: cloned_list.txt
argv[3]: NULL 포인터
이처럼 구성된다
커맨드 라인 인자(Command Line Arguments) 예시
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Number of command line arguments: %d\n", argc);
for (int i = 0; i < argc; i++)
{
printf("Argument %d: %s\n", i, argv[i]);
}
return 0;
}
./filecopier.exe list.txt cloned_list.txt
입출력 리디렉션, 커맨드 라인 인자의 활용
이러한 입출력 리디렉션과 커맨드 라인 인자는 게임 개발에서 다양한 용도로 활용된다
1. 게임 설정 파일 로딩
게임에서는 종종 초기 설정이나 환경 변수들을 파일로 저장하고 로딩하는데,
이때 입출력 리디렉션을 사용하여 설정 파일을 읽을 수 있다
게임이 실행될 때 설정 파일을 명시하여 게임의 동작을 커스터마이징이 가능하다
2. 디버깅 및 테스트
커맨드 라인 인자를 사용하여 디버깅 정보를 전달하거나,
게임에 특정한 플래그를 전달하여 특정 기능을 활성화할 수 있다
또한, 특정한 상황을 시뮬레이션하거나 테스트하는 데에도 활용될 수 있다
2. 자동화 및 배치 처리
게임 개발에서는 자동화 스크립트를 사용하여 자동으로 여러 가지 작업을 수행할 때가 많다
이때 커맨드 라인 인자를 통해 스크립트에 필요한 정보를 전달하거나,
스크립트에서는 입출력 리디렉션을 사용하여 결과를 파일로 저장할 수 있다
3. 프로파일링과 성능 분석
게임의 성능을 분석하거나 프로파일링 할 때에도 커맨드 라인 인자를 통해
특정 옵션을 설정하거나 결과를 파일로 저장할 수 있습니다.
4. 빌드 및 배포 시 자동화
빌드 스크립트에서 커맨드 라인 인자를 사용하여 빌드 구성을 변경하거나,
빌드된 실행 파일을 특정 디렉토리로 복사하거나 압축하는 등의 작업을 자동화할 수 있다
'C > [코드조선] C 핵심' 카테고리의 다른 글
[C] 조건부 컴파일과 매크로 함수 (0) | 2024.02.18 |
---|---|
[C] 전처리기 지시자와 컴파일 플래그 (0) | 2024.02.17 |
[C] 파일 입출력 (2) (0) | 2024.02.16 |
[C] 파일 입출력 (1) (0) | 2024.02.16 |
[C] 열거형과 공용체 (0) | 2024.02.15 |