Абстрагируйтесь от stderr и stdout. Передавайте output stream в качестве состояния шелла или аргумента команды.