![셸 - 프로그램 출력을 파일로 리디렉션이 작동하지 않음](https://linux55.com/image/167216/%EC%85%B8%20-%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%9D%8C.png)
프로그램의 출력을 파일로 리디렉션하려고 합니다. 때때로 프로그램은 화면에 몇 줄을 인쇄하고 종료될 때까지 이 작업을 계속합니다. 종료되면 인쇄되는 줄 수는 수천 줄이 됩니다.
리디렉션 명령 없이 프로그램이 실행되면 모든 정보가 화면에 정상적으로 인쇄됩니다. 그러나 >, 1>, 2> 또는 기타 여러 가능성을 사용하려고 하면 두 가지 중 하나가 발생합니다. 출력 파일은 완전히 비어 있거나 처음 30줄만 포함합니다(페이지를 채울 만큼). 또한 "|cat>"을 사용하여 리디렉션을 시도했지만 다시 아무 일도 일어나지 않았습니다.
문제의 원인은 무엇입니까? 저는 우분투를 사용하고 터미널에서 프로그램을 실행하고 있습니다. 이 프로그램은 C++로 컴파일되었으며 "cout"을 사용하여 텍스트를 인쇄합니다.
성공하지 못한 채 사용하려고 시도한 리디렉션의 예입니다.
- ./testProgram > 출력.txt
- ./testProgram 1> 출력.txt
- ./testProgram 2> 출력.txt
- ./testProgram &> 출력.txt
- ./testProgram > 출력.txt 2>&1
- ./테스트 프로그램|cat>output.txt
- > 대신 >>를 사용하는 위의 모든 변형에는 동일한 문제가 있습니다.
Obs: 계산하는 데 며칠이 걸릴 수 있으므로 cat output.txt를 사용하여 가끔씩 파일을 살펴봅니다. 그래도 위에서 언급한 것처럼 텍스트의 첫 페이지 정도만 파일에 기록되며 그게 내가 볼 수 있는 전부입니다. 이 텍스트 양은 프로그램을 실행하는 몇 초에 해당하므로 파일을 읽는 것이 문제의 원인은 아닌 것으로 보입니다.