A subtle issue with variable_descriptor is that it attempts to read all the data at once in the end. As opposed to whenever the data is available. Proposed design:
posix_process would poll the given output fds for output. Once that is done, the read method will be called on them directly.