封装fork/wait等操作, 编写函数 process_create

封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数. 

  
  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 
  5 int progress_create(int(*func)(),const char *file,char *argv[])
  6 {       
  7         int ret=0;
  8         pid_t pid=fork();
  9         if(pid==0)
 10         {       
 11                 ret=func(file,argv);
 12                 if(ret==-1)
 13                 {
 14                 printf("调用exevcp失败\n");
 15                 perror("func");
 16                 _exit(-1);
 17                 }
 18         }
 19         else{
 20         int st;
 21         pid_t ret=wait(&st);
 22         if(ret==-1)
 23         {       
 24                 perror("wait");
 25                 exit(-1);
 26         }
 27         }
 28         return 0;
 29 }
 30 
 31 int main()
 32 {
 33         char *argv1[]={"ls"};
 34         char *argv2[]={"ls","-al","/etc/passwd",0};
 35         progress_create(execvp,*argv1,argv2);
 36         return 0;
 37 }

猜你喜欢

转载自blog.csdn.net/CDatreides/article/details/81706833