echoall.c:
int main(int argc,char *argv[])
{
int i;
char **ptr;
extern char **environ;
for(i=0;i<argc;i++)
{
printf("argv[%d]:%s\n",i,argv[i]);
}
printf("environ:\n");
for(ptr=environ;*ptr!=0;ptr++)
{
printf("%s\n",*ptr);
}
exit(0);
}
exec.c:
#include "apue.h"
#include <sys/wait.h>
char *env_init[]={"USER=unknown","PATH=/home/jiang/new_apue",NULL};
int main(void)
{
pid_t pid;
if((pid=fork())<0)
{
err_sys("fork error");
}
else if (pid == 0)
{
//child
if(execle("/home/jiang/new_apue/echoall.o","echoall","myarg1",
"MY ARG2",(char *)0,env_init)<0)
{
err_sys("excele error");
}
}
if(waitpid(pid,NULL,0)<0)
{
err_sys("wait error");
}
if((pid=fork())<0)
{
err_sys("fork error");
}
else if(pid==0)
{
// execlp("pwd","pwd",(char*)0);
if(execlp("/home/jiang/new_apue/echoall.o","echoall","only 1 arg",(char*
)0)<0)
{
err_sys("execlp error");
}
}
exit(0);
}
jiang@AY140524110335068908Z:~/new_apue$ ./a.out
argv[0]:echoall
argv[1]:myarg1
argv[2]:MY ARG2
environ:
USER=unknown
PATH=/home/jiang/new_apue
jiang@AY140524110335068908Z:~/new_apue$ argv[0]:echoall
argv[1]:only 1 arg
environ:
REMOTEHOST=14.23.84.186
SHELL=/bin/bash
TERM=ansi
HUSHLOGIN=FALSE
USER=jiang