따라서 일반적으로 명령을 사용하여 입력을 리디렉션하면 find . | grep -i pineapple
평가만 수행되고 find .
모든 입력이 포함됩니다 grep -i pineapple
.
그러나 프로그램을 실행하고, 일부 입력을 제공하고, 일부 출력을 읽고, 프로그램을 계속 실행한 다음, 이전 출력을 기반으로 추가 입력을 보내는 스크립트를 작성해야 합니다. 예를 들어, scanf
scanf를 두 번 사용하는 C 프로그램을 생각해 보세요. 정상적으로 리디렉션하는 경우 프로그램을 실행하기 전에 두 호출에 대한 입력을 지정해야 scanf
하지만 두 번째 scanf 호출에 제공하려는 내용은 프로그램이 수행하는 작업에 따라 다릅니다. 통화 사이에 수신 통화가 출력됩니다.
stdout 및 stdin으로 프로그램 입력 및 출력에 액세스할 수 있도록 이 작업을 시도했지만 ./pineapple >&0 <&1 &
작동하지 않습니다. 예상한 내용이 확실하지 않습니다. 입력은 이진 형식이며 동일한 입력에 대해 프로그램 출력이 항상 동일하지는 않습니다(관련된 경우). 제가 설명한 작업을 쉽게 수행할 수 있는 방법이 있나요?