stderr
mintty에서 C 프로그램을 실행하고 출력 스트림을 debug.txt 파일로 전환하고 싶습니다 . 이는 다음을 사용하여 수행할 수 있습니다.
./zombie_jump 2>debug.txt
그러나 Windows 명령줄에서 이를 시작하는 데 문제가 있습니다.
mintty -s 70,55 ./zombie_jump 2>debug.txt
2>debug.txt
명령이 중단된 것처럼 동작합니다 (프로그램을 실행하지만 오류 스트림을 전환하지 않음).
mintty -s 70,55 "./zombie_jump 2>debug.txt"
"./zombie_jump 2>debug.txt"를 보낸 것처럼 작동하여 오류가 발생합니다 Failed to run ./zombie_jump 2>debug.txt: No such file or directory
.
어떤 명령을 사용해야 합니까?
편집하다:
mintty -s 70,55 './zombie_jump 2>debug.txt'
Failed to run ./zombie_jump : No such file or directory
라는 파일을 반환 하고 생성합니다 debug.txt'
.
답변1
여기서 오류는 이해하기 매우 쉽습니다. mintty
프로그램 출력을 cmd
출력 리디렉션이 설정된 (아마도) 로 전달하지 않습니다. 대신 자체 GUI 창에 출력을 표시합니다. 결국 이것이 터미널 에뮬레이터가 수행하도록 설계된 것입니다. :)
출력 리디렉션은 셸 기능입니다. 방금 실행하면 mintty my_command
쉘을 전혀 사용하지 않는 것입니다. 대신 .mintty
my_command
을 인용하면 해당 (전체) 이름의 명령을 찾으라는 "my_command 2>out.err"
의미입니다 . 이는 일반 Linux 셸에 mintty
입력하는 것과 같습니다 . "my_command 2>out.err"
어느 쪽이든 작동하지 않습니다.
이제 이것이 쉘 기능임을 확인했으므로 쉘이 필요하다는 것이 분명해졌습니다. 일반적인 선택은 Bash입니다. Bash는 다음과 같이 시작할 때 실행할 명령 문자열을 전달할 수 있습니다.
bash -c "my_command 2>out.err"
즉, 다음과 같이 사용할 수 있습니다 mintty
.
mintty /bin/bash -c "my_command 2>out.err"
내 컴퓨터에서 이런 방식으로 시작된 Cygwin Bash 셸은 cmd
.