我想删除/ 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;
}
答案 0 :(得分:2)
使用单个文件,rm和unlink执行相同的任务,删除该文件。正如POSIX定义的那样,rm和unlink都调用unlink()系统调用。
在GNU rm中,它调用unlinkat()系统调用,这相当于unlink()或rmdir()函数,除非在path指定相对路径的情况下。
请注意
在某些系统上,取消链接也可以删除目录。至少在GNU系统中,unlink永远不能删除目录的名称。