# UtahaPC **Repository Path**: K-Utaha/UtahaPC ## Basic Information - **Project Name**: UtahaPC - **Description**: 在霞ヶ丘詩羽指导下开发的神の进程管理模块。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-04 - **Last Updated**: 2023-05-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UtahaPC(诗羽进程管理模块) ## 介绍 在霞ヶ丘詩羽指导下开发的神の进程管理模块。 ![诗羽酱](README.assets/诗羽酱.jpg) UtahaPC主要是为用户提供一个进程管理系统,使得用户可以方便的创建、管理、杀死子进程。 原有的一些基于Node.js进程管理系统在学习成本上较高,不适宜入门级开发者方便的使用,所以,UtahaPC正是针对入门级开发者开发的一个轻量级的进程管理系统,能够为入门级开发者提供一些关键功能的同时又有较低的学习成本。 ## 使用教程 ### 示例 ```javascript const utahaPC = require('../main') let main = new utahaPC() main.createChild( [ { name: 'utaha0', command: 'node', file: './b.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, { name: 'utaha1', file: './a.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], }, { name: 'utaha1', file: './b.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], }, { name: 'utaha3', command: 'date', parameters: [], }, { name: 'utaha4', command: 'date', options: { stdio: 'inherit' } }, { name: '', file: './e.js' }, { name: 'megumi', file: './e.js', restart: 'count' }, { name: 'Eriri0', file: './a.js', restart: 'none' }, { name: 'Eriri1', file: './a.js', restart: 'count', restartCount: 5 }, { name: 'Aki Utaha0', command: 'node', file: './c.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, { name: 'Aki Utaha1', command: 'node', file: './d.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, ]) main.showChildProcess() setTimeout(() => { main.killChild('Aki Utaha9') main.killChild('Aki Utaha0') },5000) setTimeout(() => { main.showChildProcess() },6500) ``` ### 创建子进程 首先创建一个实例对象: ```javascript let main = new utahaPC() ``` 然后利用此对象, ```javascript const utahaPC = require('../main') let main = new utahaPC() main.createChild( [ { name: 'utaha0', command: 'node', file: './b.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, { name: 'Aki Utaha1', command: 'node', file: './d.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, ]) ``` 配置项说明 | 配置项名称 | 功能 | 备注 | | ------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | | name | 为你的子进程添加一个名字,为了便于后续使用,**诗羽小姐强烈的建议您为每个子进程添加一个独一无二而又合法的名字**。 | **子进程名字只能以数字0-9、大小写英文字母及下划线开头**。 | | command | 添加执行的命令 | 1. 注意,command和file不可同时不存在。2. 如果您需要执行js文件,那么您可以忽略此配置项,诗羽小姐将贴心的自动用您当前安装的node执行js文件。 | | file | 指明要执行文件的路径。 | 绝对路径和相对路径均可以使用。 | | parameters | 执行时传入的参数。 | 单个参数可以直接传入,多个参数需要用数组的格式传入 | | options | spawn的options,具体可以查看child_process.spawn()的文档。 | | | restart | 指明若该子进程创建失败为您自动尝试重新创建的次数,可选值为`count`,`none`。`count`表示该子进程将在创建失败时最多重新创建restartCount配置项中传入的次数,`none`则表示创建失败后不再重新创建。**默认为`none`**。 | **该配置项将控制restartCount配置项是否启用,即若缺少该配置项,则无论您在restartCount配置项中传入何止都将失效**。 | | restartCount | 规定子进程在创建失败时最多重新创建的次数。 | 该配置项应传入数字,是否启用取决于restart配置项的值是否为`count`。 | ### 结束子进程 要结束子进程,同样的,你需要在有一个实例对象的基础上调用*killChild*或*killAllChildren*函数即可。 #### 结束某个子进程 *killChild*函数可以结束某一个已经成功创建并且仍在运行的子进程,参数是该子进程的名称,由于此方法是基于名称查找你的子进程,所以建议你在创建子进程时为她们加上名字,当然,如果你没有添加名字,那么诗羽小姐将会在创建时添加一个默认的名字,你依旧可以根据这个默认的名字来作为标识结束该子进程。 ```javascript let main = new utahaPC() main.createChild( [ { name: 'Aki Utaha1', command: 'node', file: './d.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, ]) main.killChild('Aki Utaha1') ``` #### 结束所有子进程 *killAllChild*函数则是一次性结束所有已成功创建的子进程,这个函数不需要参数。 ```javascript let main = new utahaPC() main.createChild( [ { name: 'Aki Utaha1', command: 'node', file: './d.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } }, { name: 'Aki Utaha2', command: 'node', file: './c.js', parameters: ['Kasumigaoka Utaha','Aki Megumi','Aki Utaha'], options: { stdio: 'inherit' } } ]) main.killAllChildren() ``` ### 显示正在运行的子进程 调用该函数可以查看当前正在运行的子进程,会以列表的形式将子进程的一些关键信息向你进行展示。 ```javascript let main = new utahaPC() main.showChildProcess() ```