프로그램과 정보를 주고받을 때 파일 시스템 액세스 방지 [닫기]

프로그램과 정보를 주고받을 때 파일 시스템 액세스 방지 [닫기]

시스템 프로그램을 수만번 호출하는 메인 스크립트를 작성했습니다. 기본 스크립트는 호출할 때마다 프로그램에 입력 파일을 생성하고 제공합니다. 완료되면 프로그램은 기본 스크립트에서 읽을 수 있는 출력 파일을 생성합니다. 프로그램이 실행되면:program inputFile outputFile

기본 스크립트는 느리게 실행되는데, 이는 실행하는 동안 발생하는 많은 양의 I/0 오버헤드 때문이라고 생각됩니다 program.

디스크에 쓰거나 읽지 않고도 프로그램을 실행할 수 있습니까?

inputFile및 둘 다 여러 outputFile줄을 포함할 수 있습니다. 프로그램의 내부 구조는 변경될 수 있지만 나는 그렇게 하고 싶지 않습니다. 불행히도 다른 곳에서는 관련 조언을 찾을 수 없었습니다.

답변1

이는 스크립트 쌍에 따라 다를 수 있습니다 program. 파일을 여러 번 처리해야 하는 복잡한 작업을 수행하는 경우 운이 좋지 않을 수 있습니다. (우리는 이를 "영점"이라고 부릅니다.)

먼저, 명명된 파일 대신 표준 출력에 출력을 쓰도록 프로그램에 직접적이고 명시적으로 지시할 수 있는지 확인하십시오. 일부 프로그램은 대시( )만 포함된 인수를 -적절한 표준 입력 또는 표준 출력으로 해석합니다. 그러니 시도해 보세요

프로그램 입력 파일 - |귀하의 처리

/dev/stdout둘째, 출력 파일 이름과 동일하게 시도하십시오.

프로그램 입력 파일 /dev/stdout |귀하의 처리

셋째, 명명된 파이프를 사용해 보십시오.

myFifo=$(mktemp)
프로그램 입력 파일 "$myFifo"&
귀하의 처리<"$myFifo"
rm "$myFifo"

관련 정보