There's no point in opening pipes if you don't read from them. Where is the code that reads from the pipes?