封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg), func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.
1 #include<unistd.h>
2 #include<stdio.h>
3 #include<sys/wait.h>
4
5 void process_create(pid_t* pid,void* func,void* argv){
6 if((*pid=fork())<0){
7
8 perror("fork()");
9 }else if(*pid==0){
10 ((int(*)())func) (((char**)argv)[0],(char**)argv);
11 perror("func");
12 }
13 else{
14 int st;
15 while(wait(&st)!=*pid);
16 }
17 }
18 int main(){
19 pid_t pid;
20 char* argv[]={
21 "ls","-l",NULL
22 };
23 process_create(&pid,execvp,argv);
24 return 0;
25 }
测试结果: