共计 734 个字符,预计需要花费 2 分钟才能阅读完成。
调用内部程序的四个异步办法别离是:execFile, spawn, exec 和 fork,四个办法的返回值都是 ChildProcess 实例,ChildProcess 实例领有 Process 的一部分罕用性能,例如:pid, stdin, stdout, stderr,等。他们的具体用法以及区别如下:
execFile
- 能够调用 js 脚本代码(执行 node a.js),也能够调用其余类型的程序;
- 父子过程不拆散,且不可设为父子过程拆散,基于回调 Buffer 获取子过程输入;
- 父子过程能够应用信号量通信;
spawn
- 能够调用 js 脚本代码(执行 node a.js),也能够调用其余类型的程序;
- 默认父子过程不拆散,能够设为父子过程拆散,基于流获取子过程输入;
- 父子过程能够应用信号量通信;
exec
- 能够调用 js 脚本代码(执行 node a.js),也能够调用其余类型的程序;
- 能够应用 shell 外壳的一些用法,例如:重定向,管道操作,通配符,等;
- 父子过程不拆散,且不可设为父子过程拆散,基于回调 Buffer 获取子过程输入;
- 父子过程能够应用信号量通信;
fork
- fork 办法 只能 调用 js 脚本代码,或者说 专门 用来调用 js 脚本代码,非 js 脚本的其余程序,不能调用;
- fork 办法默认父子过程拆散,并基于流获取子过程输入;
- 因为父子过程拆散,所以子过程的流默认重定向到控制台;
- 不须要像 spawn(detach=false),通过 pipe 调用将子过程的流重定向到父过程的 stdout 上;
- fork 除了信号量,还能够过程间通信;
同步办法
- fork 没有同步办法,其余三个办法有同步办法。execSync 和 execFileSync 返回值 Buffer 就是子过程的输入后果。spawnSync 返回对象的 stdout Buffer 中是子过程的输入。
正文完