내 응용 프로그램 중 하나(예: "A")가 일부 경고를 STDIN에 푸시하고 응용 프로그램의 셸 스크립트가 해당 STDIN을 읽고 처리합니다. 같은 방식으로 출력을 STDIN으로 푸시할 수 있는 다른 애플리케이션(B, C, D라고 함)이 있을 수 있습니다.
내 첫 번째 앱이 다른 앱의 STDIN 푸시를 읽을 수 있고 데이터에 충돌이 발생할 수 있는지 궁금합니다. (A의 STDIN을 읽으면 B, C의 STDIN 내용을 알 수 있나요?)
답변1
이 경우 유용한 "STDIN of A"가 없습니다. STDIN은 항상당신의애플리케이션. a, b, c는 STDOUT에 쓰고, 괄호는 이들을 함께 묶고, 파이프는 결과를 애플리케이션의 STDIN에 연결합니다. 예, 이러한 모든 STDOUT은 충돌할 수 있습니다(얽혀 있지 않고 하나씩).
( a ; b; c ) | yourapp
또는
( a && b && c ) | yourapp
a, b, c가 셸 스크립트("응용 프로그램의 셸 스크립트") 내에 있는지, 그리고 그것이 모두 스크립트인지는 확실하지 않습니다. 그렇지 않은 경우 스크립트는 "응용 프로그램"이고 위의 시나리오에 있습니다. 그렇다면 다음과 같은 것이 있어야합니다.
while ...; do
read something
a
b
c
done
위의 시나리오에서 "읽기"는 외부 애플리케이션의 일반 STDIN을 순차적으로 다시 읽어서 읽을 내용이 없으면 차단할 수도 있지만 A가 어떻게 항목을 여기에 푸시할 수 있는지 모르겠습니다.
확실하지는 않지만 명명된 파이프나 메시지 브로커가 도움이 될 수 있는 상황일 수 있다고 생각됩니다.