您的位置:首页 > 其它

第八章 进程控制 exec函数

2014-08-04 16:39 351 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: