Hacker News new | ask | show | jobs
by mtdewcmu 4373 days 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.

1 comments

You are right I should have clarify that. thank you
I'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. :)