Open FrankKai opened 3 years ago
原文链接:Node.js中的进程与线程
原文中spawn,fork,exec,execFile的示例需要补充一下,我把目录结构和代码做了一些调整,更加易读和理解。
./sub_test sub_spawn_pipe.js sub_spawn_ipc.js sub_fork_ipc.js sub_exec.js sub_execFile.js ./test sub_process.js
sub_spawn_pipe.js
let { spawn } = require("child_process"); let path = require("path"); // 通过node命令执行sub_process.js文件 let childProcess = spawn("node", ["sub_process.js"], { cwd: path.resolve(__dirname, "test"), stdio: ["pipe"], // 通过流的方式 }); // 子进程读取写入的数据 childProcess.stdout.on("data", function (data) { console.log(data.toString()); // 接收到的data是Buffer流,需要通过toString()转为字符串 });
./test/sub_process.js
process.stdout.write('hello');
node ./sub_test/sub_spawn_pipe.js
sub_spawn_ipc.js
let { spawn } = require("child_process"); let path = require("path"); // 通过node命令执行sub_process.js文件 let childProcess = spawn("node", ["sub_process.js"], { cwd: path.resolve(__dirname, "test"), stdio: ["pipe", "pipe", "pipe", "ipc"], // 通过流的方式 }); // 监听消息 childProcess.on("message", function (data) { console.log(data); });
process.send("send");
node ./sub_test/sub_spawn_ipc.js
sub_fork_ipc.js
let { fork } = require("child_process"); let path = require("path"); // 通过node命令执行sub_process.js文件 let childProcess = fork("sub_process.js", { cwd: path.resolve(__dirname, "test"), }); childProcess.on("message", function (data) { console.log(data); });
node ./sub_test/sub_fork_ipc.js
sub_exec.js
const { exec } = require("child_process"); let childProcess = exec( "node './test/sub_process'", function (err, stdout, stdin) { console.log(stdout); } );
node ./sub_test/sub_exec.js
sub_execFile.js
const { execFile } = require("child_process"); let childProcess = execFile( "node", ["./test/sub_process"], function (err, stdout, stdin) { console.log(stdout); } );
node ./sub_test/sub_execFile.js
原文链接:Node.js中的进程与线程
原文中spawn,fork,exec,execFile的示例需要补充一下,我把目录结构和代码做了一些调整,更加易读和理解。
spawn进程(流方式通信,on('data'))
sub_spawn_pipe.js
./test/sub_process.js
spawn进程(ipc方式通信, on('message'), send)
sub_spawn_ipc.js
./test/sub_process.js
fork进程(ipc方式通信,on('message'), send)
sub_fork_ipc.js
./test/sub_process.js
exec
sub_exec.js
./test/sub_process.js
execFile
sub_execFile.js
./test/sub_process.js
总结