05_2_2.c
#include<stdio.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
printf("05_2_2.c:\n");
printf("My pid is %d\n",getpid());
printf("My arguments: ");
for(int i = 0;i < argc ;i++)
{
printf("%s ",argv[i]);
}
printf("\n");
return 0;
}
单独运行它的话 传参数的时候,其第一个参数必定为./05_2_2 如下图:
但是如果在另一个程序中用execvp函数来调用的话,就会出现这样的情况:
05_2_1.c
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main(int argc, char const *argv[])
{
printf("5_2_1: My pid is %d.\n",getpid());
char * args[] = {"hahahaha","heihei","haha",NULL};
execvp("./05_2_2",args);
return 0;
}
即可以清楚地看到在05_2_1中执行了05_2_2程序,并且,05_2_2程序在执行的时候,第一个参数可以为任意的了。