channels: allow bytes sockets and stdio, and buffered bytes output

This commit is contained in:
Björn Linse
2017-06-05 08:29:10 +02:00
parent 5215e3205a
commit 1ebc96fe10
14 changed files with 573 additions and 420 deletions

View File

@@ -227,18 +227,15 @@ static int do_os_system(char **argv,
return -1;
}
// We want to deal with stream events as fast a possible while queueing
// process events, so reset everything to NULL. It prevents closing the
// Note: unlike process events, stream events are not queued, as we want to
// deal with stream events as fast a possible. It prevents closing the
// streams while there's still data in the OS buffer (due to the process
// exiting before all data is read).
if (input != NULL) {
proc->in.events = NULL;
wstream_init(&proc->in, 0);
}
proc->out.events = NULL;
rstream_init(&proc->out, 0);
rstream_start(&proc->out, data_cb, &buf);
proc->err.events = NULL;
rstream_init(&proc->err, 0);
rstream_start(&proc->err, data_cb, &buf);