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

如何在linux中使用execv系统调用?,第1张

概述我正在编写一个程序,使用execl来执行我的exe文件,该文件正在测试并且它的工作非常好,并在 Linux CLI中显示输出.但我不知道如何将execl更改为execv,虽然我知道两个系统调用都会给出相同的值.我对execv系统调用的数组参数感到困惑 这是我的execl示例程序 int main(void){ int childpid; if((childpid = fork()) 我正在编写一个程序,使用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的更多细节.

总结

以上是内存溢出为你收集整理的如何在linux中使用execv系统调用?全部内容,希望文章能够帮你解决如何在linux中使用execv系统调用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1019326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存