nodejs子进程正确的打开方式

  

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

  

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

  

执行:调用贝壳来执行命令的。这部分跟“执行”这个词的UNIX/C语义刚好相反。

  

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

  

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

  

产卵:相当于Python的子流程,可以指定是否使用壳。默认不使用壳。也支持鹿啊env啊argv0啊之类的参数。

  

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

nodejs子进程正确的打开方式