linux刪除文件函數
1. linux 怎麼刪除 文件link
每一個文件,都可以通過一個struct stat的結構體來獲得文件信息,其中一個成員st_nlink代表文件的鏈接數。
當通過shell的touch命令或者在程序中open一個帶有O_CREAT的不存在的文件時,文件的鏈接數為1。
通常open一個已存在的文件不會影響文件的鏈接數。open的作用只是使調用進程與文件之間建立一種訪問關系,即open之後返回fd,調用進程可以通過fd來read 、write 、 ftruncate等等一系列對文件的操作。
close()就是消除這種調用進程與文件之間的訪問關系。自然,不會影響文件的鏈接數。在調用close時,內核會檢查打開該文件的進程數,如果此數為0,進一步檢查文件的鏈接數,如果這個數也為0,那麼就刪除文件內容。
link函數創建一個新目錄項,並且增加一個鏈接數。
unlink函數刪除目錄項,並且減少一個鏈接數。如果鏈接數達到0並且沒有任何進程打開該文件,該文件內容才被真正刪除。如果在unlilnk之前沒有close,那麼依舊可以訪問文件內容。
綜上所訴,真正影響鏈接數的操作是link、unlink以及open的創建。
刪除文件內容的真正含義是文件的鏈接數為0,而這個操作的本質完成者是unlink。close能夠實施刪除文件內容的操作,必定是因為在close之前有一個unlink操作。
舉個例子簡單說明:通過shell touch test.txt
1、stat("test.txt",&buf);
printf("1.link=%d\n",buf.st_nlink);//未打開文件之前測試鏈接數
2、fd=open("test.txt",O_RDONLY);//打開已存在文件test.txt
stat("test.txt",&buf);
printf("2.link=%d\n",buf.st_nlink);//測試鏈接數
3、close(fd);//關閉文件test.txt
stat("test.txt",&buf);
printf("3.link=%d\n",buf.st_nlink);//測試鏈接數
4、link("test.txt","test2.txt");//創建硬鏈接test2.txt
stat("test.txt",&buf);
printf("4.link=%d\n",buf.st_nlink);//測試鏈接數
5、unlink("test2.txt");//刪除test2.txt
stat("test.txt",&buf);
printf("5.link=%d\n",buf.st_nlink);//測試鏈接數
6、重復步驟2 //重新打開test.txt
7、unlink("test.txt");//刪除test.txt
fstat(fd,&buf);
printf("7.link=%d\n",buf.st_nlink);//測試鏈接數
8、close(fd);//此步驟可以不顯示寫出,因為進程結束時,打開的文件自動被關閉。
順次執行以上8個步驟,結果如下:
1.link=1
2.link=1 //open不影響鏈接數
3.link=1 //close不影響鏈接數
4.link=2 //link之後鏈接數加1
5.link=1 //unlink後鏈接數減1
2.link=1 //重新打開 鏈接數不變
7.link=0 //unlink之後再減1,此處我們改用fstat函數而非stat,因為unlilnk已經刪除文件名,所以不可以通過 文件名訪問,但是fd仍然是打開著的,文件內容還沒有被真正刪除,依舊可以使用fd獲得文件信息。
執行步驟8,文件內容被刪除。。。。
2. Linux C用什麼函數可以刪除某個文件中的一行內容
用C語言刪除某個文件中的一行內容的原理就是
將該行的末尾和
開頭找到,
然後將
改行的末尾的所有內容就復制到
改行的開頭,使用覆蓋的方式來實現刪除.
如果實在不懂的話,
你就在改行的末尾
開始寫入一定長度的(視改行的位元組長度而定)
的轉義字元
'\b'
3. linux系統下 c++如何創建及刪除文件
c++有提供的標准庫
使用標准庫可以進行文件的一個操作
比如使用fstream或者也可以使用fopen等等
也可以使用remove函數刪除文件
linux也有提供相應的api介面
比如open函數可以打開或者創建文件
使用rmdir函數可以刪除文件夾
使用unlink也可以刪除文件
創建特殊的文件也可以使用相應的函數
比如創建FIFO文件可以使用mkfifo函數等
4. linux系統下 c++如何創建及刪除文件
c++有提供的標准庫
使用標准庫可以進行文件的一個操作
比如使用fstream或者也可以使用fopen等等
也可以使用remove函數刪除文件
linux也有提供相應的api介面
比如open函數可以打開或者創建文件
使用rmdir函數可以刪除文件夾
使用unlink也可以刪除文件
創建特殊的文件也可以使用相應的函數
比如創建FIFO文件可以使用mkfifo函數等
5. 求解linux 刪除文件的原理
link文件相當於Windows下的快捷方式,刪除快捷方式,當然相當於刪除
那條訪問實際文件(或目錄)的線,只是把這個訪問入口刪除了。
unlink somelinkfile,如果是使用rm somefile,那麼就是刪除文件了,就不是
刪除訪問入口,而是直接從硬碟上面刪除指定文件。
臨時寫的,有點亂啊,如果有問題再繼續追問就是了,能夠回答的一定盡力
回答,當然不會的也會明確告知的,總不能誤人子弟啊
6. linux如何刪除正在被使用的文件
linux刪除正在被使用的文件的操作方法如下:
1、首先打開Linux系統,創建一個空文件和空文件夾。如圖所示:
7. Linux C用什麼函數可以刪除某個文件中的一行內容
用C語言刪除某個文件中的一行內容的原理就是 將該行的末尾和 開頭找到, 然後將 改行的末尾的所有內容就復制到 改行的開頭,使用覆蓋的方式來實現刪除. 如果實在不懂的話, 你就在改行的末尾 開始寫入一定長度的(視改行的位元組長度而定) 的轉義字元 '\b'
8. linux文件編程怎麼刪除文件中的某些
1、刪除文件命令
rm
-f
文件名
將會強行刪除文件,且無提示
2、刪除文件夾以及文件夾中的所有文件命令:
rm
-rf
目錄名字
其中:
-r:向下遞歸刪除
-f:直接強行刪除,且沒有任何提示
注意:
使用rm
-rf要格外注意,linux中沒有回收站,慎重操作。
9. mats文件能不能刪除
mat文件還是不刪的好,mat貌似是資料庫文件,用來支持某一程序運行的 。
mat文件還是不刪的好,mat貌似是資料庫文件,用來支持某一程序運行的。
Matlab中有兩種刪除文件的方式:
一種是刪除文件 delete()函數 //可以使用help delete命令查詢delete()函數的使用方法
delete('p1.jpg') 表示刪除當前路徑下的名為p1.jpg的圖片文件,刪除其他文件一樣,只需將單引號里的文件名更改即可。
delete('train/p1.jpg') 表示刪除當前文件夾下的train文件夾下的名為p1.jpg的圖片文件
簡單的說,括弧里存放的應該是要刪除文件的的路徑加上文件名。
另一種是刪除文件夾:rmdir()函數 //同樣可以使用help rmdir命令查詢rmdir()函數的使用方式
和delete()函數類似
rmdir('temp')表示刪除當前路徑下的名為temp文件夾
rmdir('temp/temp1')表示刪除當前文件夾下的temp文件夾的子文件夾temp1
delete只能用於刪除文件,不能用於刪除文件夾操作。rmdir和Linux中的刪除文件命令相同,且功能也相同,很容易記憶。
10. linux下remove刪除函數刪除文件,文件存在,調用後返回為0,文件卻沒有刪除,求解
如果文件正在被使用的話,文件的真正刪除是在你解除引用之後進行,但是不需要用戶進行操作來干預了,文件一定會刪除.
如果你想調用remove之後馬上看到文件被刪除,建議你判斷是否被佔用。或者使用system("rm -rf filename").