|
发表于 2010-10-7 10:27:39
|
显示全部楼层
Post by helloworld1;2114058
Please try this:
{ rm "$file" && $your-program > "$file"; } < "$file"
在Bash的man page里面,“{ list; }"是一种复合命令,里面的命令列表list共享相同的标准输入/输出。
我猜这里神奇的地方应该是打开一个文件之后,删除它,然后重新创建一个同名文件。尽管在list里面首先删除了那个文件,然而由于外层
这个文件还是处于打开状态,内核不会删除这个文件在磁盘上的内容(直到其被关闭),新创建的文件尽管有相同的名称,但是仅此而已,它们没有引用相同的inode,这只是一个刚好有相同名称的新文件。 |
|