封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg)

标签: linux fork wait execvp
6人阅读 评论(0) 收藏 举报
分类:

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

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int process_create(int(*func)(), const char *file, char *argv[])
{
    int ret = 0;
    pid_t pid = fork();
    if(pid == 0)
    {
      
        ret = func(file, argv);
        if(ret == -1)
        {
            printf("调用execvp失败\n");
            perror("func");
            _exit(-1);
        }

    }
    else
    {
        int st;
        pid_t ret = wait(&st);
        if(ret == -1)
        {
            perror("wait");
            exit(-1);
        }
    }
    return 0;
}

int main()
{
    char *argv1[] = {"ls"};
    char *argv2[] = {"ls", "-al", "/etc/passwd", 0};
    process_create(execvp, *argv1, argv2);
    return 0;
}

执行结果:


查看评论

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

  • qq_40995354
  • qq_40995354
  • 2018-04-07 11:35:12
  • 26

*Linux进程控制*

一.学习进程创建, 终止,等待(使用代码实现)1.进程创建(1)fork创建进程    fork调用格式         #include &amp;lt;unistd.h&amp;gt;      ...
  • Lycorisradiata__
  • Lycorisradiata__
  • 2018-04-06 11:17:27
  • 22

封装 fork wait execvp, 编写函数 process_create

利用回调函数封装fork wait execvp 等函数, 编写一个progress_create函数 #include&amp;lt;stdio.h&amp;gt; #include&amp;...
  • sinat_36629696
  • sinat_36629696
  • 2018-03-25 09:51:54
  • 51

实现函数 process_create

封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg)  func回调函数就是子进程执行的入口函数, arg是传递...
  • Nessie_zhao
  • Nessie_zhao
  • 2018-03-30 10:25:17
  • 11

关于封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg)的解答

process_create(pid_t* pid, void* func, void* arg)函数里的pid是func回调函数就是子进程执行的入口函数, arg是传递给func回调函数的参数...
  • Cyrus_wen
  • Cyrus_wen
  • 2018-04-21 13:28:18
  • 0

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

封装fork/wait等操作, 编写函数 process_create(pid_t* pid, void* func, void* arg),func回调函数就是子进程执行的入口函数, arg是传递给...
  • Shawei_
  • Shawei_
  • 2018-04-17 13:26:08
  • 4

void *(*func)(void *)总结

注意:函数指针是C语言的语法,无法把C++类的函数地址赋给一个函数指针变量,其不支持通过命名空间来访问一个类的函数/方法。 问题来源:线程创建函数, pthread_create(pthread_t ...
  • jzhb1987
  • jzhb1987
  • 2013-09-24 16:01:59
  • 1814

错误处理函数cspp.c

  • 2015年07月19日 22:06
  • 23KB
  • 下载

Linux学习之进程fork()、exec、exit()/_exit()、wait()/waitpid

fork()函数 进程是一个程序的一次执行的过程。它和程序是有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动...
  • wuqishuang
  • wuqishuang
  • 2015-09-12 21:14:19
  • 1232

wait和 wait_pid函数用法

wait和 wait_pid函数用法 wait的函数原型是:    #i nclude /* 提供类型pid_t的定义 */  #i nclude   pid_t wait(int *status) ...
  • ialpha
  • ialpha
  • 2008-06-06 09:12:00
  • 1862
    个人资料
    持之以恒
    等级:
    访问量: 8307
    积分: 664
    排名: 7万+
    最新评论