Suppose the child reads the pipe but doesn't close the writing end. How will it know when to stop reading? If there is no data to read, the OS will simply block the process until a writer adds something to the pipe, and for all the OS knows, that could be the very same process that's trying to read it.