封装fork wait
创建进程
#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
#include<errno.h>
typedef int pid_t;
void process_create(pid_t *pid, int (*func)(), void *arg[])
{
int my_pid = fork();
if(my_pid <0) //异常退出
{
perror("fork error");
return;
}else if(my_pid == 0) //子进程
{
int ret = func((char*)arg[0],(char*)arg); //回调函数 替换进程
if(ret == -1)
{
perror("func error");
return ;
}
return ;
sleep(1);
}else{ //父进程返回子进程pid
*pid = my_pid;
wait(NULL);
printf("%d\n",my_pid);
}
}
int main()
{
char *arg[]= {"ls","-l", 0};
pid_t pid = 0;
process_create(&pid,execvp,(void*)arg); //execvp替换进程
return 0;
}
运行结果: