LibChildControl

作业控制程序
授权协议 LGPL
开发语言 C/C++
所属分类 程序开发、 作业/任务调度
软件类型 开源软件
地区 不详
投 递 者 沈弘盛
操作系统 Linux
开源组织
适用人群 未知
 软件概览

LibChildControl 能创建一个线程来管理子进程,并且在失败的时候重启他们。

使用示例:

int child_process (void *data)
{
    int id = *(int *)data;
    int delay = (id + 1) * 1000;

    printf ("TEST: Start child %d.\n", id);

    int i;
    for (i = 0; i < nb_loops; i++) {

        printf ("TEST: Child %d is working (loop %d/%d)\n", id, i + 1, nb_loops);

        int j;
        float r = 0;
        for (j = 0; j < 100 * id; j++) {
            float x = 0;
            do
                x = (float) rand () / ((float)RAND_MAX + 1);
            while (x == 0);
            float y = (float) rand () / ((float)RAND_MAX + 1);
            float z = sqrtf (-2. * logf (x)) * cosf (2 * M_PI * y);
            r += z * (1 << 31);
            usleep (1000);
        }
    }
    
    kill (getpid (), SIGTERM);

    return 0;
}


int child_term (void *data)
{
    int id = *(int *)data;
    printf ("TEST: Child %d is dieing.\n", id);
    return 0;
}

#define nb_children 2
#define nb_loops    10

int main (int argc, char *argv[])
{
    int d[nb_children];
    int i;
    for (i = 0; i < nb_children; i++) {
        d[i] = i + 1;
        register_child (i + 1, NULL, NULL, child_process, child_term, (void *)(d + i));
    }

    sleep (100);

    return 0;
}

 相关资料
  • 2. 作业控制 2.1. Session与进程组 在第 1 节 “信号的基本概念”中我说过“Shell可以同时运行一个前台进程和任意多个后台进程”其实是不全面的,现在我们来研究更复杂的情况。事实上,Shell分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group)。一个前台作业可以由多个进程组成,一个后台作业也可以由多个进程组成,Shell可以同时运行一个前台作业和任意多

  • 在本章中,我们将学习进程组,会话和作业控制。 进程组 - 进程组是一个或多个进程的集合。 进程组由共享相同进程组标识符(PGID)的一个或多个进程组成。 进程组ID(PGID)与进程ID具有相同的类型(pid_t)。 进程组有一个进程组领导,即创建组的进程,进程ID变为组的进程组标识。 会话 - 它是各种进程组的集合。 作业控制 - 这允许shell用户同时执行多个命令(或作业),一个在前台,另一

  • 第 34 章 终端、作业控制与守护进程 目录 1. 终端 1.1. 终端的基本概念 1.2. 终端登录过程 1.3. 网络登录过程 2. 作业控制 2.1. Session与进程组 2.2. 与作业控制有关的信号 3. 守护进程

  • 作业控制语言(JCL)是多虚拟存储(MVS)的命令语言,它是 IBM 大型机计算机中常用的操作系统。 JCL 识别要执行的程序,所需的输入和输入/输出的位置,并通过作业控制语句通知操作系统。

  • 问题内容: 我正在使用詹金斯。 詹金斯(Jenkins)有上游工作:A 詹金斯(Jenkins)有下游工作:B A的控制台日志输出为: B的控制台日志输出为: 我想要得到的是: 有什么办法,我可以在作业A的控制台日志中获取作业B的控制台输出,然后确定作业“ A”是否成功(使用日志解析/ grep表示故障/错误等关键字)。 问题答案: 不确定您要达到的目标,但是看起来有些人为。查看以下方法是否满足您

  • sh wget progressbar colorama Gooey——把 CLI 程序变成 GUI