加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 23:18:26 所属栏目:Linux 来源:网络整理
导读:我正在编写一个程序,使用execl来执行我的exe文件,该文件正在测试并且它的工作非常好,并在 Linux CLI中显示输出.但我不知道如何将execl更改为execv,虽然我知道两个系统调用都会给出相同的值.我对execv系统调用的数组参数感到困惑 这是我的execl示例程序 int m
我正在编写一个程序,使用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文件的文件路径和数组的参数.为了要求程序执行测试exe文件,需要为数组设置什么类型的参数?
https://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/execv.htm链接是否包含我想要的东西?但是我从中读到的是,命令是请求列表文件,而不是执行文件.纠正我,我犯了任何错误

解决方法

为了看到execl和execv之间的区别,这里有一行代码执行

ls -l -R -a

与execl:

execl("/bin/ls","ls","-l","-R","-a",NULL);

与execv:

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

发送到execv的char *数组将作为argv传递给/ bin / ls(在int main中(int argc,char ** argv))

这是execl(3) Linux manual page的更多细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读