编写函数 process_create(pid_t* pid, void* func, void* arg)

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

这里写图片描述

阅读更多
版权声明: https://blog.csdn.net/Shawei_/article/details/79973480
文章标签: 函数 c语言
个人分类: linux
上一篇实现自主myshell
下一篇引用,this指针,构造,析构函数及运算符重载,友元函数
想对作者说点什么? 我来说一句

glut 函数详解 txt版本的

2010年05月15日 11KB 下载

dsp pid算法测序

2014年02月15日 110KB 下载

int main和int main(void)区别

2011年12月16日 1KB 下载

解释 void timer0() interrupt 1 using 2

2011年04月03日 40KB 下载

javascript:void(0);

2013年05月30日 101KB 下载

没有更多推荐了,返回首页

关闭
关闭