进程替换(exec函数)

来源:互联网 发布:mysql 分布式基础架构 编辑:程序博客网 时间:2024/05/29 19:07
 
  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的结果图

原创粉丝点击