如何使用由用户在C中输入的参数使用execl()函数?
我可以用execv(args[0],args)来做。如何将execv()转换为execl()?
谢谢。
发布于 2016-12-09 19:04:17
execv和execl做的事情完全一样,当您预先知道命令行参数的数量时,execl就会使用它,而execv允许动态地确定参数的数量。
更通用的函数是execv;execl是已知参数数时的一种速记,允许程序员避免构造argv[]数组。
无论如何,要按要求回答这个问题:您必须事先知道传递给程序的最大参数数为execd。如果您知道参数的最大数量,那么您可以预先准备一个对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
);( execl的最后一个参数是NULL,而不是exec_argv[20],因为如果使用-Wall调用,gcc将查找它;因为在exec_args[]中必须有一个NULL,这不会导致两个函数调用的效果有任何不同。)
https://askubuntu.com/questions/858871
复制相似问题