****欧欧美毛片4,国产午夜精品视频,97视频在线观看免费视频,久久七国产精品

數(shù)據(jù)恢復咨詢熱線:400-666-3702??

歡迎訪問南京兆柏數(shù)據(jù)恢復公司,專業(yè)數(shù)據(jù)恢復15年

兆柏數(shù)據(jù)恢復公司

?行業(yè)新聞

?當前位置: 主頁 > 行業(yè)新聞

Linux中文件執(zhí)行中的鎖定怪現(xiàn)象解釋

瀏覽量: 次 發(fā)布日期:2017-11-18 12:51:31

本來今天不準備開電腦了,太困了,想睡覺,然而一哥們兒短信都發(fā)過來了,要問個問題,于是還是打開了電腦,沒想到是一個很有代表性的問題,順便也牽扯了前些天我的工作中的一個bug,值得記錄下來。問題如下:

linux下,一個可執(zhí)行文件exe1正在執(zhí)行中,rm –f可以將其刪除,mv可以將其移除,mv $other exe1也可以將其替換,但是cp $other exe1則顯示文件忙,求解。

這實際上并不是一個真正的問題,因為只要你的基礎(chǔ)知識扎實,這個問題顯然很簡單,原因只有一個,那就是linux文件基于引用計數(shù)。現(xiàn)在問題是這些個命令如何來操作一個文件的引用計數(shù)。下面的討論都是基于獨占打開的模式。

如果一個文件已經(jīng)被打開,那么它的引用計數(shù)會增加1,如果調(diào)用了rm,實際上底層只是unlink了一下,也就是說將它的引用計數(shù)減少1,這樣雖然你在界面上(命令行或者GUI)看不到它了,但是它被打開時的計數(shù)還在,只有當它被關(guān)閉的時候,引用計數(shù)變?yōu)?,才徹底刪除它。

再說mv命令,它實際上只是一個源文件的rename而已,如果mv的目標本來就存在,那么在目標上執(zhí)行一個類似rm的效果,也就是unlink一下,結(jié)合引用計數(shù)的理論,目標文件如果已經(jīng)被打開,那么當關(guān)閉的時候?qū)⒉粡痛嬖冢绻緛砭蜎]有被打開,那么mv的時候,目標直接被刪除,因為unlink之后,它的引用計數(shù)變成了0。

最后看一下cp命令,cp的話并不觸動源文件和目標文件元數(shù)據(jù)本身(時間戳除外),它只是打開源文件和目標文件,在源文件上執(zhí)行read,然后將結(jié)果write到目標文件,實質(zhì)上是一個IO操作,對于可執(zhí)行文件,是獨占打開的,并不允許寫入,因此會出錯。

相關(guān)推薦