gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:46:48 26 4
gpt4 key购买 nike

我正在编写一个程序,使用 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);
}
}

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

链接是我想要的吗?但是我从中读到的是,命令是请求列出文件,而不是执行文件。纠正我,我有任何错误

最佳答案

为了看出区别,这里有一行代码执行ls -l -R -a

  • execl(3) :

    execl("/bin/ls", "ls", "-l", "-R", "-a", NULL);
  • execv(3) :

    char* arr[] = {"ls", "-l", "-R", "-a", NULL};
    execv("/bin/ls", arr);

发送到execvchar(*)[]会作为argv传递给/bin/ls > (在 int main(int argc, char **argv))

关于c - 如何在linux中使用execv系统调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com