On Monday, July 16, 2012 08:09:23 PM Bruce Dubbs wrote: > Baho Utot wrote: > > One could do this > > > > echo "test file" > test > > ln test link1 > > ln test link2 > > ln link1 link3 > > > > ls -i > > > > 1333952 test 1333952 link1 1333952 link2 1333952 link3 > > > > rm test > > ls -i > > 1333952 link1 1333952 link2 1333952 link3 > > > > Doesn't link[1..3] point to "no where" or garbage? > > No, they point to the data. The rm command only deletes the data when > the link count goes to zero. That is, rm removes the entry from > directory, and decrements the link count. > > $ echo "test file" > test > $ ls -l test > -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test > $ ls -i test > 1016053 test > > Note in the fist form the refernece count is 1. > $ ln test1 test > $ ls -l test* > -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test > -rw-rw-r-- 2 bdubbs bdubbs 10 Jul 16 18:58 test1 > $ ls -1i test* > 1016053 test > 1016053 test1 > > The link count is 2. > > $ rm test > $ cat test1 > test file > > The data is still there. > > $ ls -l test* > -rw-rw-r-- 1 bdubbs bdubbs 10 Jul 16 18:58 test1 > > but now the link count is 1. This is also the reason you cannot rmdir a > directory that is not empty. Note too that if you have two files with > the same inode, the system will copy the data if you edit either one. > You then have two different files, each with a count of 1.
That is weird, I would have expected both files to contain the same data. Not for the "system" to go behind your back and create two separate files. I guess I have too much C programming (from my old programming days) in my line of thought. I would have been nice to add data to one "file" and readout the data with the other (aka) dup file handles under C. > > Try it. > > -- Bruce -- http://linuxfromscratch.org/mailman/listinfo/lfs-support FAQ: http://www.linuxfromscratch.org/lfs/faq.html Unsubscribe: See the above information page