任何被 exec 调用所执行的程序,都可以访问 exec 调用中的参数。这些参数是调用 exec的程序传送给它的。我们可以通过定义程序 main()函数的参数来使用这些参数,方法如下:
main( int argc, char* argv[] );
这对于大多数人来说应该是熟悉的,这种方法就是 C 语言程序访问命令行参数的方法。这也显示了 shell 本身就是使用 exec 启动进程的。
被调用的程序:
#include <stdio.h> int main(int argc,char* argv[]) { printf("argc=%d\n",argc); while(--argc>=0) { printf("%s \n",argv[argc]); } return 0; }
调用程序:
#include <stdio.h> #include <unistd.h> int main(void) { char* c[] = {"aaa","bbb","ccc"}; execv("/haha/160331/target",c); return 0; }