nodejs 子进程正确的打开方式


Posted in NodeJs onJuly 03, 2017

因为库太拙了,需要在 nodejs 里调用子进程来获取数据。然而看到 child_process 的文档真是头疼,这么多种启动子进程的方法直接推到人面前,也没个解释,命名也十分无用。只能一个个地查看详细说明来找到应该使用的那个……所以我整理了一下。

首先是同步创建子进程的那几个函数。会阻塞 nodejs 的主循环。无用。(要是写小脚本的话我直接上 shell 或者 Python 了,干嘛跟自己过不去呢。)

exec :调用 shell 来执行命令的。这部分跟「exec」这个词的 UNIX/C 语义刚好相反。

execFile :不调用 shell,直接执行命令。这命名不明所以。

fork :执行一个 新的 nodejs 进程,并且建立一个专用的 IPC 通道。子进程除了 IPC 通道外与父进程无任何瓜葛!命名真是一如既往地误人子弟。默认使用与父进程相同的可执行文件(nodejs 版本),也可以另外指定。

spawn :相当于 Python 的 subprocess,可以指定是否使用 shell。默认不使用 shell。也支持 cwd 啊 env 啊 argv0 啊之类的参数。

结论:如果需要用 Python 的 subprocess.run / Popen 类似的功能,就使用 child_process.spawn 。 exec 开头的那个函数似乎没啥大用,大概跟 subprocess 的 getoutput / check_call 之类的一样只是有一些预设而已吧。

NodeJs 相关文章推荐
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
Nodejs学习笔记之Stream模块
Jan 13 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 NodeJs
nodejs入门教程五:连接数据库的方法分析
Apr 24 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
node快速搭建后台的实现步骤
Feb 18 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 #NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 #NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 #NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 #NodeJs
NodeJS自定义模块写法(详解)
Jun 27 #NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 #NodeJs
NodeJs中express框架的send()方法简介
Jun 20 #NodeJs
You might like
Terran剧情介绍
2020/03/14 星际争霸
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
不同js异步函数同步的实现方法
2016/05/28 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
JS代码检查工具ESLint介绍与使用方法
2020/02/04 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
Python中字典的基本知识初步介绍
2015/05/21 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Python列表常见操作详解(获取,增加,删除,修改,排序等)
2019/02/18 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
泰国办公用品购物网站:OfficeMate
2018/02/04 全球购物
德国拖鞋网站:German Slippers
2019/11/08 全球购物
心得体会开头
2014/01/01 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
网站推广策划方案
2014/06/04 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
上诉状格式
2015/05/23 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL