任何被exec调用所执行的程序,都可以访问exec调用中的参数。这些参数是调用exec的程序传送给它的。我们可以通过定义
程序main()函数的参数来使用这些参数。方法如下:
main(int argc,char *argv[])
这对于大多数人来说应该是熟悉的,这种方法就是C语言程序访问命令行参数的方法。
这也是显示了shell本身就是使用exec启动进程的。
以上说明的mian()函数中,argc是参数计数器,argv指向参数数组本身,所以,用execvp()执行一个程序,如下所示:
char *argin[]={"command","with","argument",NULL};
当程序启动后,它取得的argc和argv之值如下:
argc=3;
argv[0]="command";
argv[1]="with";
argv[2]="argument";
argv[3]=NULL;
为了进一步说明这种参数传递技术,请考虑下列程序showarg:
#include <stdio.h>
main(int argc,char *argv[])
{
while(--argc > 0)
{
printf("%s",*(++argv));
printf("/n");
}
}
这个程序的工作就是把它的参数(除第一个参数外)的值传送到标准输出,如果用如下程序段来调用showarg的话,则
其argc参数为3,输出结果为:“hello world”.
char *argin[]={"shwoarg","hello","world",NULL};
execvp(argin[0],argin);