don't ignore return values from write() and pipe()