2017-11-21 4 views
0

파이프의 출력을 적극적으로 처리하려고합니다. 예를 들어 대화 형 콘솔이있는 서버를 호스팅하는 경우 출력을 실시간으로 처리하고 처리하는 방법은 무엇입니까?루비 : 파이프 출력을 적극적으로 처리합니다.

+0

무엇보다 콘솔? 네트워크 연결? – tadman

+0

나는'line_in = STDIN.read do ... end' 라인을 따라 뭔가를해야한다고 생각한다. 아마도 당신은 달성하고자하는 것을 더 잘 설명 할 수있는 몇 가지 테스트 "코드"(bash 스크립트)를 제공 할 수 있습니다. – Felix

+0

잠깐 기다려주십시오. 서버 입력을 제공하거나 출력 또는 둘 모두를 처리 하시겠습니까? 질문을 개선하고 예제를 제공해주십시오. – Felix

답변

1

Best practices with STDIN in Ruby?에서 멋진 설명을 찾을 수 있습니다.

당신은

$ ./bash_script.sh | ./ruby_script.rb 

출력됩니다

ABCDE 
OIIAUSD 
같은

#!/bin/bash 
echo "abcde" 
sleep 2 
echo "oiiausd" 
sleep 2 

같은 스크립트를 먹이 주어진 다음의

#!/usr/bin/env ruby 
ARGF.each_line do |line| 
    puts line.upcase 
end 

을 수행 할 수 있습니다 0

그러나 입력 스트림 처리가 예상대로 작동하지 않으면 IO 버퍼링 및 처리가 필요할 수 있습니다.

또한 ARGF-magic을 사용하면 ./ruby_script.rb LOGFILE.log (파이프없이) 같은 로그 파일을 사용할 수 있다는 이점이 있습니다.

관련 문제