20.9. Przechwytywanie strumienia wyjściowego i informacji o błędach z polecenia powłoki w systemie Unix

Problem

Chcemy uruchomić zewnętrzny program tak jak w „20.8. Sterowanie zewnętrznym procesem za pomocą metody popen”, ale dodatkowo chcemy przechwytywać standardowy strumień informacji o błędach. Metoda popen daje dostęp tylko do standardowego wyjścia.

Rozwiązanie

Można skorzystać ze standardowej biblioteki języka Ruby — open3. Jej metoda popen3 pobiera blok kodowy, do którego przekazuje trzy strumienie wejścia-wyjścia, po jednym dla (odpowiednio): standardowego wejścia, standardowego wyjścia i standardowej informacji o błędach.

Załóżmy, że wykonaliśmy uniksowe polecenie ls w celu wyświetlenia zawartości nieistniejącego katalogu. ...

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.