哪一个是从linux系统中删除文件的更好选择

时间:2018-05-13 07:19:13

标签: c linux bash exec unlink

我想删除/ tmp中的文件,比如san.txt

我有两种方法,哪种更好,为什么?

接近一个:

int main(){
        int status;
        pid_t pid = fork();
        if(-1 == pid){
                printf("fork() failed");
                exit(EXIT_FAILURE);
        }else if(pid == 0){
                execl("/bin/sh", "sh", "-c", "rm /tmp/san.txt", (char *) NULL);
        }else{
                printf("[%d]fork with id %d\n",pid);
                waitpid(pid,&status,0);
        }
return 0;
}

方法2:

int main(){
        int ret = unlink("/tmp/san.txt");
        if ( 0 == ret){
                printf("file removed \n");
        }
        return 0;
}

1 个答案:

答案 0 :(得分:2)

使用单个文件,rm和unlink执行相同的任务,删除该文件。正如POSIX定义的那样,rm和unlink都调用unlink()系统调用。

在GNU rm中,它调用unlinkat()系统调用,这相当于unlink()或rmdir()函数,除非在path指定相对路径的情况下。

请注意

在某些系统上,取消链接也可以删除目录。至少在GNU系统中,unlink永远不能删除目录的名称。