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); }
#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); }