如果文件达到一定大小,我正在编写一个 shell 脚本来取消/截断文件。该文件也一直被一个进程打开/写入。现在每次我取消文件时,文件指针会重新定位到文件的开头还是会保持在以前的位置?让我知道一旦文件被截断,我们是否可以重置文件指针?
问问题
1629 次
2 回答
2
文件指针的位置取决于打开文件的进程如何打开文件。如果是以追加模式打开的,那么截断文件将意味着新数据将写入文件末尾,这实际上也是文件截断后第一次写入的开始。如果不是以追加模式打开,那么截断文件只是意味着文件开头有一系列虚拟零字节,但实际数据将在最后一次写入完成的同一点继续写入. 如果文件正在被其他进程重新打开,而不是保持打开状态,则应用大致相同的规则,但文件更有可能在开始时被写入。
您无法重置另一个进程的文件指针,AFAIK。
于 2012-10-15T02:56:16.923 回答
0
一个 cron 作业或类似的东西将完成这项任务;它会找到每个大于 4096 字节的文件,然后将文件无效
$ find -type f -size 4096c -print0 | while IFS= read -r -d $'\0' line; do cat /dev/null > $line; done
于 2018-03-26T02:48:22.273 回答