简化 pipe 读写逻辑，增加 process.exec 读测试