StupidBeauty
Read times:386Posted at:Thu Jan 20 20:35:56 2011
- no title specified

文本文件忙(Text file busy

在以下情况会发生这个错误:尝试向一个当前被内核执行的文件写入内容 ,或者执行一个当前已经以写入模式打开的文件

例如

$ cp /bin/cat example $ ./example & [1 ? 17238 [1 ?+ Stopped ./example $ echo foo >example bash: example: Text file busy

注意,虽然你不能覆盖那个文件,但是你可以删除它

$ rm example

然后再替换它

$ cp /bin/kill ./example

你可以这么做,是因为,内核不会释放这个程序使用的磁盘空间 ,除非对它的最后一个使用也释放咯它 ,也就是说 :这个程序退出咯 。如果机器崩溃咯 ,而没有机会释放这些东西的话 ,在重启的时候 fsck通常会抱怨“已删除的inode 的dtime 为 "deleted inode has zero dtime"(inode 已经被删除,但是没有被释放 ,因为在程序崩溃的时候 它仍然在使用当中)Unix可以做到这一点,因为它使用文件的inode 号来引用文件 ,而那个东西可以拥有0 个或者更多的文件名 。打开一个文件然后删除它 (并且保持它的文件把柄 (filehandle) )是一个使用临时文件的普遍做法 ,因为你知道 ,当你的程序退出时 ,它会被系统从磁盘上删除。注意, 微软的Windows不能做到这一点,因为它使用文件名来引用文件。所以 ,在Windows 系统中,你无法删除一个正在使用的文件。

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4