4 ms·
That was a contrived example. The shell sets up the pipe and file redirections for each process in the pipeline, then lets them go. It has no control over when
by mtdewcmu 12y ago
That was a contrived example.
The shell sets up the pipe and file redirections for each process in the pipeline, then lets them go. It has no control over when the child processes read or write. It could be a race condition, but it's written in such a way that it appears that the file will get truncated before it can be read virtually 100% of the time.
- fakedrake 12y agoYou are right I should have clarify that. thank you
- mtdewcmu 12y agoI'm not sure if it's actually a race; it probably depends on how bash is implemented. But this prints what is expected: echo "1\n2\n3\n4\n" > numbers && cat numbers | { sleep 1 && cat > numbers && cat numbers ; } That's not exactly the same (because the redirection for cat #2 now happens in a subshell), but it shows that this is basically racy. :)