시스템 프로그램을 수만번 호출하는 메인 스크립트를 작성했습니다. 기본 스크립트는 호출할 때마다 프로그램에 입력 파일을 생성하고 제공합니다. 완료되면 프로그램은 기본 스크립트에서 읽을 수 있는 출력 파일을 생성합니다. 프로그램이 실행되면:program inputFile outputFile
기본 스크립트는 느리게 실행되는데, 이는 실행하는 동안 발생하는 많은 양의 I/0 오버헤드 때문이라고 생각됩니다 program
.
디스크에 쓰거나 읽지 않고도 프로그램을 실행할 수 있습니까?
inputFile
및 둘 다 여러 outputFile
줄을 포함할 수 있습니다. 프로그램의 내부 구조는 변경될 수 있지만 나는 그렇게 하고 싶지 않습니다. 불행히도 다른 곳에서는 관련 조언을 찾을 수 없었습니다.
답변1
이는 스크립트 쌍에 따라 다를 수 있습니다 program
. 파일을 여러 번 처리해야 하는 복잡한 작업을 수행하는 경우 운이 좋지 않을 수 있습니다. (우리는 이를 "영점"이라고 부릅니다.)
먼저, 명명된 파일 대신 표준 출력에 출력을 쓰도록 프로그램에 직접적이고 명시적으로 지시할 수 있는지 확인하십시오. 일부 프로그램은 대시( )만 포함된 인수를 -
적절한 표준 입력 또는 표준 출력으로 해석합니다. 그러니 시도해 보세요
프로그램 입력 파일 - |귀하의 처리
/dev/stdout
둘째, 출력 파일 이름과 동일하게 시도하십시오.
프로그램 입력 파일 /dev/stdout |귀하의 처리
셋째, 명명된 파이프를 사용해 보십시오.
myFifo=$(mktemp) 프로그램 입력 파일 "$myFifo"& 귀하의 처리<"$myFifo" rm "$myFifo"