小编use*_*490的帖子

exec、execvp、execl、execv 之间的区别?

我正在编写一个代表 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 ;
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢 !

c linux process exec execvp

4
推荐指数
1
解决办法
6647
查看次数

标签 统计

c ×1

exec ×1

execvp ×1

linux ×1

process ×1