Это
решение намного красивее. Естественно, некоторая доработка напильником класса SubprocessProtocol потребуется. Я недавно проверял - работает, причем можно одновременно перехватывать и stdout, и stderr.
P.S. На всякий случай - параметр data в pipe_data_received - это байты, поэтому его и нужно декодировать в utf-8 строку. Если под Windows и есть русские имена файлов - придется разобраться, какую кодировку использует rar. Скорее всего - cp866.