进程替换(exec函数)

 
  1 # include<stdio.h>     
  2  #include<stdlib.h>  
  3  #include<unistd.h>   
  4  #include<fcntl.h>    
  5  #include<sys/types.h>
  6  #include<sys/stat.h>                                                                                                    
  7  #include<string.h>   
  8  int main()          
  9   {                  
 10      pid_t id=fork(); 
 11  if(id==0)           
 12     {                
 13     printf("child is running\n");
 14     sleep(1);        
 15  char* env[]={"MYENV=/A/B/C/D/AAAA",NULL};
 16  char*  argv[]={"ls","-l","-n","-i",NULL};
 17 // execl("/bin/ls","ls","-l","-n","-i",NULL);
 18  // execlp("ls","ls","-l","-n","-i",NULL);
 19 //   execv("/bin/ls",argv); 
 20  // execvp("ls",argv);
 21                      
 22                        
 23     //  execle("./myenv","myenv",NULL,env);
 24           execve("./myenv",argv,env);        
 25           printf("child id done\n");    //exec成功的话不执行此语句
  26           exit(1);     
 27       }                              
 28       else                                                                                                               
 29      {                 
 30            pid_t ret=waitpid(id, NULL,0);
 31            if(ret>0)   
 32            {           
 33               printf("father wait success\n");  }
 34                else{   
 35                   printf("child quit not normal\n");
 36                        
 37             }     }      return 0;                                                                                           }
 

                                   

下图就是execl execlp execv execvp的结果图

下图是execle execve的结果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值