Windows 명령줄에서 mintty로 C 프로그램 실행

Windows 명령줄에서 mintty로 C 프로그램 실행

stderrmintty에서 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쉘을 전혀 사용하지 않는 것입니다. 대신 .minttymy_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.

관련 정보