在execl()函数ic C语言中使用rm linux命令

时间:2021-07-16 23:34:51

标签: c linux rm execl

希望一切顺利... 我正在尝试编写在 C 语言的 execl 中使用 execl 的代码,但是当我放置文件目录时它不起作用。 代码是:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
 int main(int argc,char* argv[]){
  int n,m,x;
  n=fork();
  if(n==0){
     execl("/bin/rm","rm /home/mazenas/Desktop/folder/","f.txt",NULL);
          }
  else{
     wait(&m);
     printf("end of Programm\n");
      }
  return 0;
  }

请帮帮我!

2 个答案:

答案 0 :(得分:5)

execl() 的参数指定要执行的程序的命令行参数。

execl("/bin/rm","rm /home/mazenas/Desktop/folder/","f.txt",NULL);

表示执行这个:

"rm /home/mazenas/Desktop/folder/" "f.txt"

如果要执行这个命令:

rm "/home/mazenas/Desktop/folder/f.txt"

你应该写:

execl("/bin/rm", "rm", "/home/mazenas/Desktop/folder/f.txt", NULL);

答案 1 :(得分:3)

我很确定你的意思

 execl("/bin/rm","rm", "/home/mazenas/Desktop/folder/f.txt",NULL);

如果 rm 检查它的调用名称,那么 f.txt 没有意义并且它会抱怨;否则它将尝试在当前目录而不是给定路径中 rm f.txt