execl() 参数

execl() 参数

如何在 C 语言中使用带有用户输入参数的 execl() 函数?

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

谢谢。

答案1

execvexecl做完全相同的事情,不同之处在于它execl旨在用于您提前知道命令行参数的数量,而execv允许动态确定参数的数量。

更通用的函数是execvexecl当知道参数的数量时,它是一种简写,允许程序员避免构造数组argv[]

无论如何,要回答这个问题:你必须事先知道最大限度传递给程序的参数数量exec。如果您知道参数的最大数量,那么您可以提前准备一个调用来execl展开参数数组。

假设您有:

char * exec_argv [21];
char * exec_pathname;

对于参数数组的任何合法内容,以下两个调用都是等效的exec_argv[]

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
);

(的最后一个参数execlNULL而不是exec_argv[20]因为gcc如果使用调用则会查找它-Wall;因为那里必须NULL在其中的某个地方不会exec_args[]对两个函数调用的效果产生任何影响。

相关内容