封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg),func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数.
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int process_create(int (*func)(),const char* file,char *argv[])
{
pid_t pid = fork();
if(pid == -1){
perror("fork error!");
exit(0);
}
if(pid == 0){
int ret = func(file,argv);
if(ret == -1){
perror("func error!");
exit(1);
}
}else{
int st ;
pid_t ret = wait(&st);
if(ret == -1){
perror("wait error!");
exit(2);
}
}
return 0;
}
int main()
{
char *argv1[] = {"ls"};
char *argv2[] = {"ls","-al","/etc/passwd",0};
process_create(execvp,*argv1,argv2);
return 0;
}