23.1. Pisanie skryptów zarządzających zewnętrznymi programami
Problem
Chcemy automatycznie zarządzać zewnętrznym programem, który oczekuje na dane wprowadzane przez użytkownika na terminalu.
Rozwiązanie
W przypadku programu, który wymaga wprowadzenia pojedynczego łańcucha, można skorzystać z metody IO.popen
tak, jak opisano to w „20.8. Sterowanie zewnętrznym procesem za pomocą metody popen”. Poniższa metoda uruchamia polecenie, przesyła ciąg znaków do jego standardowego strumienia wejściowego i zwraca zawartość standardowego strumienia wyjściowego.
def run(command, input='') IO.popen(command, 'r+') do |io| io.puts input io.close_write return io.read end end run 'wc -w', 'Ile wyrazów jest w tym ciągu?' # => "6\n"
Pokazaną technikę powszechnie ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.