相关疑难解决方法(0)

在C和C++中使用的exec有哪些不同版本?

这些是可以在C(和C++)中使用的exec的所有版本

execl
execle
execlp
execv
execve
execvp
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?你怎么知道使用哪一个?

c c++ exec

81
推荐指数
2
解决办法
4万
查看次数

如何在linux中使用execv系统调用?

我正在编写一个程序,使用execl来执行我正在测试的exe文件,它的工作非常好,并在Linux CLI中显示输出.但我不知道如何将execl更改为execv,虽然我知道两个系统调用都会给出相同的值.我对execv系统调用的数组参数感到困惑

这是我的execl示例程序

int main(void)
{
   int childpid;
   if((childpid = fork()) == -1 )
{
   perror("can't fork");
   exit(1);
}
 else if(childpid == 0)
{
  execl("./testing","","",(char *)0);
  exit(0);
}
else
{
printf("finish");
exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)

我可以知道如何将execl更改为execv.我从网上读到的,我们必须设置我的exe文件的文件路径和数组的参数.为了要求程序执行测试exe文件,需要为数组设置什么类型的参数? https://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/execv.htm

链接是否包含我想要的内容?但是我从中读到的是,命令是请求列表文件,而不是执行文件.纠正我,我犯了任何错误

c unix linux exec

4
推荐指数
2
解决办法
3万
查看次数

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 ×3

exec ×3

linux ×2

c++ ×1

execvp ×1

process ×1

unix ×1