netcat 파이프라인이 너무 일찍 실행되고 있나요?

netcat 파이프라인이 너무 일찍 실행되고 있나요?

백그라운드에서 다음 스크립트를 실행하고 있습니다.

while true; do
    { file=$(/somescript); echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat $file; } | nc -l -p 20000
done

/somescript포트 20000에 요청을 하기 직전에 한 번 수행한 다음 기다렸다가 올바르게 응답한다는 점을 제외하면 잘 작동합니다 .

내가 뭘 잘못했나요? /somescript20000개의 요청이 있는 경우에만 실행 되어야 합니다.

답변1

참고: 이 기사가 작성된 이후 질문이 편집되었습니다(파이프라인이 반전됨). 시간이 있으면 업데이트하겠습니다.

파이프라인의 각 부분은 다른 부분과 동시에 시작됩니다. 파이프를 동기화하는 유일한 것은 I/O입니다. 여기서 한 프로세스는 파이프의 다른 프로세스가 출력을 읽거나 입력을 제공할 때까지 기다립니다.

스크립트는 파일 이름을 출력하기 전에 요청된 입력을 somescript기다리고 감시해야 합니다 .nc

이 스크립트의 기능을 모르기 때문에 구문 분석에 몇 가지 문제가 있을 수 있다고 추측할 수 있습니다.

관련 정보