有时候因为业务的需要,我们需要在代码里启动外部其他的可执行程序,怎么做呢?下面就是我封装的一个启动程序和杀死指定程序进程的方法,代码如下:
var cprocess = require('child_process');
module.exports = (function () {
return {
exec: function (fileName, filePath, title) {
cprocess.execFile(fileName, null, {
cwd: filePath
}, function (error, stdout, stderr) {
if (error) {
console.log((title || fileName) + '启动失败!错误消息:' + error);
} else {
console.log((title || fileName) + '启动成功!');
kill: function (title) {
let cmd = process.platform === 'win32' ? 'tasklist /v' : 'ps aux'
cprocess.exec(cmd, function (err, stdout, stderr) {
if (err) {
return console.error(err)
stdout.split('\n').filter((line) => {
if (line.indexOf(title) != -1) {
let processMessage = line.trim().split(/\s+/)
let processId = processMessage[1]
process.kill(processId)
console.log(title + '已关闭!')
}catch(err){
console.log(title + '已关闭!')
这里需要注意的一点是,由于杀死进程的方法,是基于tasklist列表,因此非常依赖于该列表的进程title的识别。所以,被启动的程序,最好能显式指定一个可区分的进程title
开启子进程 child_process.fork 和 cluster.fork 进行通讯。开启子进程 child_process.fork 和 cluster.fork 进行通讯。从cpu和服务器考虑,是为了更好的利用电脑的一些性能和硬件或者服务器的资源。js的执行是单线程的,没有进行多线程的api,只是能开启多进程。进程:资源调度的单位,进行内存和资源分配。使用 send 和 on 进行通讯。使用 send 和 on 进行通讯。线程:线程中计算的单位。
最近一个项目微信小程序,需要写个小型的后端程序处理聊天通讯记录保存,主要是功能是组建群聊天室,所以用node写了个websocket服务...
但是终端连接到服务器,运行 node server.js, 退出终端之后,服务就停止运行了。原以为 node server.js & 或者 nohup node server.js >/dev/null 2>&1 & 能...
const _execSync = require('child_process').execSync
execSync (cmd, opt = {}) {
return _execSync(cmd, Object.assign({ stdio: 'pipe', maxBuffer: maxBuffer }, opt))
// 清理由于崩溃导致的没有关掉的进程 --------------------
var list = execSync('ps ax | grep node').
ElementUI简介
我们学习VUE,知道它的核心思想式组件和数据驱动,但是每一个组件都需要自己编写模板,样式,添加事件,数据等是非常麻烦的, 所以饿了吗推出了基于VUE2.0的组件库,它的名称叫做element-ui,提供了丰富的PC端组件
ElementUI官网:http://element-cn.eleme.io/#/zh-CN
Vue+ElementUI安装
CD...
由于不同语言各有优势,所以有时候会用不同的语言去写不同的脚本,这次写的软件中涉及到爬虫的部分用python写的,主程序用electron+vue的方式写的,所以使用了child_process来调用python打包的exe
前端:bootstrap3+vue.js+axios
后端:node.js+express
前端点击按钮后,向后端发送请求。后端收到请求后运行exe程序。待程序运行完毕后,给前端一个相应,前端将相应显示在按钮旁边。
var process = require('child_process');
process.execFile('D:\\Postman\\Postman.exe', (error) => {
console.log(error);
2、详细介绍:https://nodejs.org/api/child_process.html
史上最详细的iOS之事件的传递和响应机制前言: 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view.寻找最合适的view的底层实现.拦截事件的处理)->找到最合适的view后 ...Event 8306 5021 5059 5057发布安全令牌时异常现象:站点访问一个,应用程序池就自动停掉一个 日志报错 解决: 1.受域...
问题一:/var/log/messages系统日志报错如下Apr 30 09:03:19 sr_web_server_01 abrt-hook-ccpp: Process 325 (node) of user 1000 killed by SIGABRT - dumping coreApr 30 09:03:37 sr_web_server_01 abrt-hook-ccpp: Failed to...
var cp = require("child_process");
cp.execFile("ping",["www.jshaman.com"],function(err,stdout,stderr){
if(err){
console.error(err);