One more thing to consider is atomicity of write interleaving to the same pipe. Say you fork two unzips in the terminal like `unzip a & unzip b`. With naive line buffering the outputs mix cleanly, but if aggregating multiple lines per write the chunk size needs to stay below PIPE_BUF for this to stay true.