Linux中對檔案刪除函式unlink的操作
原文轉自:http://blog.chinaunix.net/uid-26983585-id-3245451.html
看了unlink()函式是對檔案的刪除,於是寫了一個函式進行測試之,結果發現在呼叫了unlink以後仍然可以對檔案進行讀寫操作,又看了一下書才明白是我沒有明白unlink函式的真正含義:刪除目錄相併減少一個連線數,如果連結數為0並且沒有任何程式開啟該檔案,該檔案內容才能被真正刪除,但是若又程式開啟了該檔案,則檔案暫時不刪除直到所有開啟該檔案的程式都結束時檔案才能被刪除。
測試程式碼:點選(此處)摺疊或開啟
-
#include<stdio.h>
-
#include<sys/types.h>
-
#include<sys/stat.h>
-
#include<fcntl.h>
-
#include<unistd.h>
-
int main()
-
{
-
int fd;
-
char buf[32];
-
struct stat buff;
-
-
if((fd=open("temp.txt",O_RDWR|O_CREAT|O_TRUNC,S_IRWXU))<0){
-
printf("create file error!\n");
-
}
-
stat("temp.txt",&buff);
-
printf("temp.link=%d\n",buff.st_nlink);
-
link("temp.txt","test.txt");
-
stat("test.txt",&buff);
-
printf("after link the tem.link =%d\n",buff.st_nlink);
-
if(unlink("temp.txt")<0){
-
printf("unlink error !\n");
-
}
-
stat("temp.txt",&buff);
-
printf("after unlink tem.link=%d\n",buff.st_nlink);
-
if(write(fd,"temp",5)<0){
-
printf("write wrror!\n");
-
}
-
if((lseek(fd,0,SEEK_SET))==-1){
-
printf("lseek error!\n");
-
}
-
if((read(fd,buf,5))<0){
-
printf("read error!\n");
-
}
-
printf("%s\n",buf);
-
return 0;
- }
有關unlink的更多資訊:
http://www.cnblogs.com/codingmonkey/articles/2431078.html
相關文章
- C語言unlink()函式:刪除檔案C語言函式
- linux中誤刪除oracle資料檔案的恢復操作LinuxOracle
- thinkphp對檔案的上傳,刪除,下載操作PHP
- linux中誤刪除oracle資料檔案的恢復操作(轉)LinuxOracle
- git的忽略檔案和刪除檔案操作Git
- 在 Linux 中如何刪除檔案中的空行Linux
- Linux基楚操作指引【檔案改名、檔案備份、檔案刪除】Linux
- Linux下批量刪除空檔案或者刪除指定大小的檔案Linux
- Asp.net(C#)對檔案操作的方法(讀取,刪除,批量拷貝,刪除...)ASP.NETC#
- Linux刪除檔案命令Linux
- Linux批量刪除檔案Linux
- asp.net 對xml檔案的讀寫,新增,修改,刪除操作ASP.NETXML
- 批量刪除檔案中的^M
- 刪除Repository中的檔案
- 刪除檔案中的數字
- windows刪除檔案的批處理操作Windows
- C語言remove()函式:刪除檔案或目錄C語言REM函式
- Linux下刪除昨天的檔案Linux
- linux的刪除檔案命令和強制刪除命令Linux
- 如何優雅地刪除 Linux 中的垃圾檔案Linux
- php-unlink()函式PHP函式
- 針對字尾刪除檔案的方法
- linux 模糊批量刪除檔案Linux
- 在Linux中,如何建立、刪除和修改檔案?Linux
- 如何永久刪除Mac中的檔案?Mac
- 檔案的刪除
- Python中open函式怎麼操作檔案Python函式
- linux下rm命令刪除檔名中包含特殊字元的檔案Linux字元
- Linux 刪除除了某個檔案之外的所有檔案Linux
- RM 刪除資料檔案恢復操作
- 在Linux系統中如何刪除一個檔案?Linux
- Linux中如何刪除檔案?注意事項有哪些?Linux
- 刪除檔案
- 在Linux中,刪除一個檔案,刪不掉是什麼原因?Linux
- linux 下刪除亂碼檔案Linux
- 刪除檔案中包含指定字串的行字串
- eclipse中恢復刪除的檔案Eclipse
- Java中對檔案的操作 (轉)Java