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

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

代码

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>

void process_create(pid_t* pid,void *func, void *argv)
{
    if((*pid = fork()) == -1){
        perror("fork");
        return ;
    }   
    if(*pid == 0){ 
    ((int (*)())func) (((char**)argv)[0],(char**)argv);
        perror("func");
    }else {
        int state;
        while( wait(&state) != *pid );
    }   
}

int main()
{
    pid_t pid;
    char *argv[] = {"ls","-l",NULL};
    process_create(&pid, execvp, argv);
    return 0;
}

测试结果

这里写图片描述

猜你喜欢

转载自blog.csdn.net/xiaozuo666/article/details/79835571
今日推荐