首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >execl()参数

execl()参数
EN

Ask Ubuntu用户
提问于 2016-12-09 17:02:40
回答 1查看 4.7K关注 0票数 1

如何使用由用户在C中输入的参数使用execl()函数?

我可以用execv(args[0],args)来做。如何将execv()转换为execl()?

谢谢。

EN

回答 1

Ask Ubuntu用户

发布于 2016-12-09 19:04:17

execvexecl做的事情完全一样,当您预先知道命令行参数的数量时,execl就会使用它,而execv允许动态地确定参数的数量。

更通用的函数是execvexecl是已知参数数时的一种速记,允许程序员避免构造argv[]数组。

无论如何,要按要求回答这个问题:您必须事先知道传递给程序的最大参数数为execd。如果您知道参数的最大数量,那么您可以预先准备一个对execl的调用,解除参数数组。

假设你有:

代码语言:javascript
复制
char * exec_argv [21];
char * exec_pathname;

以下两个调用等价于参数数组exec_argv[]的任何合法内容:

代码语言:javascript
复制
execv (exec_pathname, exec_argv);

execl (exec_pathname, 
  exec_argv [0], exec_argv [1], exec_argv [2], exec_argv [3],
  exec_argv [4], exec_argv [5], exec_argv [6], exec_argv [7],
  exec_argv [8], exec_argv [9], exec_argv [10], exec_argv [11], 
  exec_argv [12], exec_argv [13], exec_argv [14], exec_argv [15],
  exec_argv [16], exec_argv [17], exec_argv [18], exec_argv [19],
  NULL
);

( execl的最后一个参数是NULL,而不是exec_argv[20],因为如果使用-Wall调用,gcc将查找它;因为在exec_args[]中必须有一个NULL,这不会导致两个函数调用的效果有任何不同。)

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/858871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档