3 ms·
I don't believe a process reading from a pipe/socketpair/whatever can enforce such constraints on a writing process (except using heavy hackery like ptrace()).
by jagrsw 2y ago
I don't believe a process reading from a pipe/socketpair/whatever can enforce such constraints on a writing process (except using heavy hackery like ptrace()). While it might be possible to adjust the pipe buffer size, I'm not aware of any convention requiring standard C I/O to respect this.
In any case, stdbuf doesn't seem to help with this:
$ ./a | stdbuf -i0 -- cat
#include <stdio.h>
#include <unistd.h>
int main(void) {
for (;;) {
printf("n");
usleep(100000);
}
}
- BoingBoomTschak 2y agoI'm sorry, but I don't understand what you're meaning. The issue in your example is the output buffering of a, not the input buffering of cat. You'd need `stdbuf -o0 ./a | cat` there.