封装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 }