【发布时间】:2025-12-29 14:15:08
【问题描述】:
我正在编写一个代表 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 ;
}
}
谢谢!
【问题讨论】:
标签: c linux process exec execvp