第八章 进程控制 exec函数

 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

你可能感兴趣的:(第八章 进程控制 exec函数)