두 프로그램에서 stdout 재 지정


9

C ++ 코드 (prog2)에서 메모리 검사 도구 (prog1)를 실행하고 있습니다.이 두 가지 모두 거대한 출력을 제공합니다. 일부 버그를 추적하려면이 출력을 파일로 저장해야합니다.

stdout을 파일로 리디렉션하려고했습니다.

prog1 prog2 > outfile.txt

그러나 그것은 prog2의 출력을 포함하는 파일을 제공하지만 prog1의 출력은 여전히 ​​터미널로 가고 있습니다.

누구나 BOTH 출력을 파일로 보내도록 지정하는 방법을 알고 있습니까? 처럼 (prog1 prog2) > outfile.txt?

답변:


19

prog1출력을 표준 오류에 기록 할 가능성이 높습니다 . 두 출력을 단일 파일로 리디렉션 할 수 있습니다.

prog1 prog2 > outfile.txt 2>&1

또는 당신은 출력을

prog1 prog2 > outfile.txt 2> errors.txt

개별 프로그램 출력을 분리하지 않고 출력 채널을 분리합니다. 셸의 제어 및 리디렉션 연산자 란 무엇입니까?를 참조하십시오 . 자세한 내용은.

prog1의 문서 를 보면 대신 출력을 명명 된 파일에 저장하도록 지시하는 옵션이있을 수 있습니다. 예를 들어,와 strace,

strace -o strace.txt prog2 > outfile.txt

strace의 출력을 저장 strace.txt하고 표준 출력에 기록 된 모든 것을 저장 outfile.txt합니다.


5
2>&1후에 가야 > outfile.txt합니다. 리디렉션 순서가 중요합니다.
Barmar

미래 독자를위한 참고 사항 : @Barmar는 상대 경로 재 지정이 서로 관련되어 있다는 것이 절대적으로 정확합니다. 익숙하지 않은 사람들에게는 프로그램 인수와 관련하여 리디렉션 순서가 소수의 경우에만 중요합니다. 시작과 끝은 일반적인 위치이지만 중간도 가끔 발생합니다 (이러한 작업을 수행하지 마십시오). echo >&2 hello world와 같습니다 echo hello world >&2. 자세한 정보는 여기 : tldp.org/LDP/abs/html/io-redirection.html
Morgen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.