stdin에 FIFO를 사용하는 데 문제가 있습니다. 그런 다음FIFO에 문제가있는 입력 루프
#!/usr/bin/env ruby
while true do
data = gets
puts "Got: #{data}"
end
나는 그것을 실행 좋아 :
Got: testdata
Got:
Got:
Got:
Got:
Got:
etc.
내 의심 뭔가가 있다는 것이다 :
$ ./script < input.fifo &
$ echo testdata > input.fifo
그것은 뭔가를 인쇄합니다
는이 같은 스크립트가 있습니다 FIFO가 잘못되었습니다. 스크립트에 전송 된 후 무언가가 삭제되지 않습니다.
나는 (... "% d 개"참조)는 scanf를 사용하여 유사한 입력 루프와 C 프로그램과 같은 일을 시도하고이처럼 행동 :$ echo 1 > input.fifo
Got: 1
Got: 1
Got: 1
Got: 1
etc.
그래서이 지난 것으로 보인다 FIFO에있는 물건이 거기에 갇히게됩니다. 루비 예제에서는 gets가 \ n을 포착하기 때문에 null 행입니다. 두 번째로 그것은 1 자체입니다.
아무도 통찰력을 제공 할 수 있습니까?
감사합니다.
흠, 내가 틀린 도구를 사용하고 있습니다. 기본적으로 나는 사용자 입력을 스크립트로 보내고, 더 이상 입력이 없을 때 스크립트가 기다릴 수있는 무언가가 필요하다. 다른 것이 입력 파일에 추가되면 다음 행을 실행하려고합니다. 내가 어떻게 이럴 수 있니? – user1222728