Improved helper function to avoid stalling when max PIPE size is exceeded

pull/2807/head
Javier Jaramago Fernández 6 years ago
parent 025ae40efa
commit 27aea669cb

@ -172,25 +172,25 @@ int execvp(const std::string& cmd, const std::vector<const char*>& argv, std::st
close(CHILD_WRITE_FD);
close(CHILD_WRITE_ERR);
waitpid(child_pid, &err, 0);
if (err == 0) {
// Read from childs stdout
count = read(PARENT_READ_FD, buffer, sizeof(buffer) - 1);
count = read(PARENT_READ_FD, buffer, sizeof(buffer));
while (count > 0) {
buffer[count] = 0;
result_ += buffer;
count = 0;
count = read(PARENT_READ_FD, buffer, sizeof(buffer));
}
} else {
// Read from childs stderr
count = read(PARENT_READ_ERR, buffer, sizeof(buffer) - 1);
count = read(PARENT_READ_ERR, buffer, sizeof(buffer));
while (count > 0) {
buffer[count] = 0;
result_ += buffer;
count = 0;
count = read(PARENT_READ_ERR, buffer, sizeof(buffer));
}
}
waitpid(child_pid, &err, 0);
}
result = result_;

Loading…
Cancel
Save