函数原型
int unlink(const char *pathname);
执行unlink()函数后删除文件,先检查文件系统中该文件的连接数是否为1,如果不是1说明此文件还有其他链接对象,因此只对此文件的连接数进行减1操作。若连接数为1,并且在此时没有任何进程打开该文件,此内容才会真正地被删除掉。在有进程打开此文件的情况下,则暂时不会删除,直到所有打开该文件的进程都结束时文件就会被删除。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
int fd, ret;
char *p = "test of unlink\n";
char *p2 = "after write something\n"
fd = open("temp.txt", O_RDWR | O_CREAT | O_);
if(fd < 0)
{
perror("open error\n");
exit(1);
}
ret = write(fd, p, strlen(p));
if(ret == -1)
{
perror("write error\n");
exit(1);
}
printf("frist write ok");
ret = write(fd, p2, strlen(p2));
if(ret == -1)
{
perror("write error\n");
exit(1);
}
printf("two write ok");
ret = unlink("temp.txt");
if(ret == -1)
{
perror("unlink error\n");
exit(1);
}
printf("entry anykey continue\n");
getchar();
close(fd);
return 0;
}