我正在编写一个代表Linux的新shell的代码。其中一个我想支持的命令是运行一个进程,例如如果我得到以下行:
command [arguments]
那么我想将command
作为一个进程运行,直到运行该进程结束。
为了做到这一点,我知道需要使用 fork()
来获取子进程并获取其PID,我的问题是我不知道以下命令之间的区别:
exec
、execvp
、execl
、execv
等,我不知道应该使用哪个以及为什么要使用它。
我的当前代码如下:
void External_Process(char *arguments[MAX_ARG], char* command)
{
int pID;
switch(pID = fork())
{
case -1:
perror("fork failed");
break;
case 0 :
setpgrp();
//execv(command, arguments);
//execvp(command, arguments);
//execl("/bin/bash", "/bin/bash","-c",command,NULL);
printf("smash error: > bad command %s\n" , command);
exit(-1) ;
break;
default:
return ;
}
}
谢谢您!