64 Pipe::Pipe(
const std::function<std::string(
const std::string &)> & fi) : f(fi) {
65 if (pipe(p2c)==-1 || pipe(c2p)==-1) {
79 char length_buffer[4];
83 ssize_t bytesRead = read(p2c[0], length_buffer,
sizeof(length_buffer));
84 if (bytesRead <= 0)
break;
85 length = ntohl(*(uint32_t*)length_buffer);
87 char* buffer =
new char[length+1];
88 bytesRead = read(p2c[0], buffer, length);
89 buffer[bytesRead] =
'\0';
91 std::string cmd(buffer);
96 length = htonl(res.size());
97 write(c2p[1], &length,
sizeof(length));
98 write(c2p[1], res.c_str(), res.size());
117 uint32_t length = htonl(code.size());
118 write(p2c[1], &length,
sizeof(length));
119 write(p2c[1], code.c_str(), code.size());
121 char length_buffer[4];
122 read(c2p[0], length_buffer,
sizeof(length_buffer));
123 length = ntohl(*(uint32_t*)length_buffer);
125 char* buffer =
new char[length+1];
126 ssize_t bytesRead = read(c2p[0], buffer, length);
127 buffer[bytesRead] =
'\0';
128 std::string result(buffer);