In the book Modern Operating System, the author explained that if the shell script has two commands, p1 and p2 and each takes turn writing into a file x, the position where p1 finishes will be remembered by p2, as they are using the same open-file-description table. I test this with a simple script.
#!/bin/bash
echo 11 > a.txt
echo 12 > a.txt
It turns out that the second command overwrites the file completely. Anything wrong with the script or the implementation?
Yes, each
echocommand opens the file (and deletes the existing contents), writes to the file, and then closes it. There's no sharing at all.To share an open file description, try this:
Of course, we're still not using two processes here, just two descriptors in one process