【Linux】多进程任务模块

创建多个进程,同时完成任务

task.c

cs 复制代码
#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
#include <sys/wait.h>
int create_process_tasks(Task_fun_t tasks[],int tsak_cnt)
{
    pid_t pid;
    int i = 0;
    for(i = 0;i < 4;i++)
    {
        pid = fork();
        if(pid > 0)
        {

        }
        else if(0 == pid)
        {
            break;
        }
    }
    if(pid > 0)
    {
        return 0;
    }
    else if(0 == pid)
    {
        tasks[i]();
    }
    else
    {
        return -1;
    }
    return 0;
}


void destroy_task(int tasks_cnt)
{
    int i;
    for(i = 0;i < tasks_cnt;i++)
    {
        wait(NULL);
    }
}

task.h

cs 复制代码
#ifndef __TASK_H__
#define __TASK_H__

typedef void(*Task_fun_t)(void);//将void (*)(void)函数指针重命名为---->Tsak_fun_t

extern int create_process_tasks(Task_fun_t tasks[],int tsak_cnt);
extern void destroy_task(int task_cnt);
#endif

main.c

cs 复制代码
#include<stdio.h>
#include"task.h"
int main(int argc, char const *argv[])
{
    //void (*pfun_arg[])(void) = {main_ctl, get_cmd, exec_cmd, get_pic, send_pic};


    Task_fun_t tasks[] = {main_ctl,get_cmd,exec_cmd,get_pic,send_pic};
    //函数指针数组里装的是调用者需要执行任务的函数的函数名
    //调用者可自定义函数所需要实现的功能
    create_process_tasks(tasks,sizeof(tasks) / sizeof(tasks[0]));//创建多线程
    destroy_task(sizeof(tasks,sizeof(tasks[0])));//回收线程
    return 0;
}

函数指针数组

cs 复制代码
#include <stdio.h>
 
void bubbleSort(int arr[], int size);
void selectionSort(int arr[], int size);
void insertionSort(int arr[], int size);

int main()
{
    void (*sortFuncs[3])(int[], int) = {bubbleSort, selectionSort, insertionSort};
    //数组形式
    //返回值类型 (* 数组名[数组大小])(函数的形参表) = {};
}
相关推荐
寂静山林4 分钟前
UVa 10228 A Star not a Tree?
算法
失散134 分钟前
分布式专题——47 ElasticSearch搜索相关性详解
java·分布式·elasticsearch·架构
serve the people7 分钟前
LangChain 表达式语言核心组合:Prompt + LLM + OutputParser
java·langchain·prompt
想ai抽9 分钟前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
takashi_void11 分钟前
如何在本地部署大语言模型(Windows,Mac,Linux)三系统教程
linux·人工智能·windows·macos·语言模型·nlp
Neverfadeaway16 分钟前
【C语言】深入理解函数指针数组应用(4)
c语言·开发语言·算法·回调函数·转移表·c语言实现计算器
武子康18 分钟前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
杰克尼22 分钟前
JavaWeb_p165部门管理
java·开发语言·前端
longgyy33 分钟前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
大聪明-PLUS34 分钟前
QEMU:如何组织与 I2C 设备的透明交互
linux·嵌入式·arm·smarc