char* arg[3];
char *envp[] = {0,NULL};
arg[0]="mkdir";
arg[1]="./user/hello";
arg[2]=NULL;
if(fork()==0){
    execve("/usr/bin/mkdir",arg,envp);
} 
else {
    return 0;
  }

Ps: execve()在执行完成后会终止当前进程

所以我们得搞个子进程去执行,才不会影响主进程

第一个参数:

文件名—就是你要用的命令对应的文件

例:ls,cd

这些常用的命令都是存在/usr/bin目录下

(当然也可以是其他可执行的文件,不过像gedit这样有GUI程序,C语言不支持,会报错)

第二个参数:

arg—命令和需要的参数,并且最后一个参数是NULL,作为结束标志

Ps:那我上面的 mkdir 举例

新建的文件夹默认是在当前目录

如果需要在子目录里新建,则在文件路径那花点心思就行了

像:

./user/hello
第三个参数:

envp—用于配置环境变量,一般情况下不用管它

Logo

更多推荐