io/read_length_waits_for_every_byte.rb
tests/_examples/io/read_length_waits_for_every_byte.rb in the metorex repository.
reader, writer = IO.pipe
pid = fork do
reader.close
writer.write("a" * 70_000)
sleep 0.05
writer.write("b" * 70_000)
writer.close
exit!(0)
end
writer.close
first = reader.read(100_000)
rest = reader.read(100_000)
p [first.size, first.count("b"), rest.size, reader.read(10)]
Process.wait(pid)
Output:
[100000, 30000, 40000, nil]