애플리케이션을 위한 별도의 표준 출력

애플리케이션을 위한 별도의 표준 출력

일부 명령줄 인수를 받아들인 다음 일부 텍스트를 터미널에 인쇄한 다음 파일에 데이터 쓰기를 시작하는 응용 프로그램이 있습니다. 여기에는 쓸 파일 이름을 정의하는 데 사용할 수 있는 매개변수가 있습니다(예: -o some-file-name.bin).

이 데이터를 실시간으로 처리하기 위해 다른 응용 프로그램을 사용하고 싶기 때문에 -o -출력을 지정하고 다른 도구로 파이프하여 프로그램이 해당 데이터를 표준 출력으로 출력하도록 하려고 합니다. 그러나 불행하게도 프로그램은 자신이 표준 출력에 쓰고 있다는 것을 알아차릴 만큼 똑똑하지 않으며 사람이 읽을 수 있는 텍스트를 표준 출력에 쓰는 것을 중단해야 합니다(이렇게 하면 바이너리 데이터가 엉망이 되기 때문입니다).

따라서 일반적으로 도구는 stdout(저는 신경 쓰지 않음)에 텍스트를 쓰고 파일에 데이터를 씁니다. stdout에 기록되는 모든 텍스트를 무시하고 대신 stdout에 데이터를 기록하여 다른 도구로 전송할 수 있도록 하고 싶습니다. 그러나 를 사용하여 실행하면 -o -표준 출력에 (바이너리) 데이터와 쓸모 없는 텍스트가 기록되어 데이터가 손상됩니다.

대신 배관을 시도했지만 -o >( my_other_tool )이로 인해 Couldn't open output: /dev/fd/63: /dev/fd/63: No such file or directory.

도구를 다시 컴파일하고 불필요한 printf 호출을 모두 제거하는 것 외에 원시 stdout을 무시하고 파일에 쓴 데이터를 stdout으로 보내는 다른 방법이 있습니까?

편집: 도움이 된다면, 나는 그것에 대해 이야기하고 있습니다nsntrace.

관련 정보