在Bash中,运行mycommand < myfile时,我修改myfile的S内容。
myfile mycommand的内容是什么?当我开始运行mycommand时,它是获得了myfile的原始内容,还是得到了修改后的myfile的内容?
发布于 2016-04-10 07:27:15
这取决于mycommand做什么。如果它睡了10分钟,然后开始读取它的标准输入,如果它们已经完成,它将看到您的修改。如果它对文件的一部分进行了第一次读取,那么您将修改该文件,并进行第二次读取,它将看到超出已读取点的更改。
另外,由于许多程序都使用了缓冲,当您认为您的命令只读取了一行时,它实际上可能读得更多(“缓冲区满”,通常是8192字节)。
但是,请注意,编辑程序通常会删除一个文件并在更改后重新创建一个新文件。在这种情况下,您的程序仍将使用已删除的旧文件内容,而不会看到任何更改。这是因为当您打开一个文件时,文件名被转换为它对应的唯一"inode“,并且不再需要文件名。如果有人删除了该文件,只要某个文件仍然打开,这个inode就会继续生存下去。当使用相同的文件名创建一个新文件时,它将得到一个不同的唯一inode。
https://unix.stackexchange.com/questions/275455
复制相似问题