在 Node.js 中,子进程模块 child_process 允许你生成和与子进程进行交互。这对于执行外部命令、脚本或长时间运行的任务是很有用的。以下是一些 child_process 模块的基本用法示例:

1. 执行外部命令:
   const { exec } = require('child_process');

   // 执行 shell 命令
   exec('ls -l', (error, stdout, stderr) => {
     if (error) {
       console.error(`Error: ${error.message}`);
       return;
     }
     console.log(`stdout: ${stdout}`);
     console.error(`stderr: ${stderr}`);
   });

   在上述示例中,exec 函数用于执行一个 shell 命令。回调函数将在命令执行完成后被调用,可以获取标准输出、标准错误和错误信息。

2. 生成子进程:
   const { spawn } = require('child_process');

   // 生成子进程执行命令
   const ls = spawn('ls', ['-l', '-a']);

   // 监听子进程的标准输出
   ls.stdout.on('data', (data) => {
     console.log(`stdout: ${data}`);
   });

   // 监听子进程的标准错误
   ls.stderr.on('data', (data) => {
     console.error(`stderr: ${data}`);
   });

   // 监听子进程关闭事件
   ls.on('close', (code) => {
     console.log(`Child process exited with code ${code}`);
   });

   在上述示例中,spawn 函数用于生成一个子进程,并执行指定的命令。可以通过监听子进程的标准输出、标准错误以及关闭事件来获取相关信息。

3. 使用 execFile 执行可执行文件:
   const { execFile } = require('child_process');

   // 执行可执行文件
   execFile('node', ['--version'], (error, stdout, stderr) => {
     if (error) {
       console.error(`Error: ${error.message}`);
       return;
     }
     console.log(`stdout: ${stdout}`);
     console.error(`stderr: ${stderr}`);
   });

   execFile 函数用于执行指定的可执行文件,例如执行 Node.js 进程并获取其版本号。

这些示例演示了如何使用 child_process 模块生成和与子进程进行交互。这对于在 Node.js 中执行外部命令或脚本非常有用。在实际应用中,你可能需要更复杂的子进程交互,例如通过 stdin 输入数据、通过事件进行更复杂的通信等。


转载请注明出处:http://www.zyzy.cn/article/detail/4764/Node.js