第八章 进程控制 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值