在Nodejs中如何生成子进程?

在 Node.js 中,你可以使用 child_process 模块来生成子进程。以下是一些基本的示例,说明如何创建子进程。

exec 方法

exec 方法可以运行 shell 命令。这个方法会创建一个新的 shell,然后在 shell 中执行命令,当命令执行完成后,将 stdout 和 stderr 一起传给回调函数。

const { exec } = require('child_process');

exec('ls -lh', (error, stdout, stderr) => {
    if (error) {
        console.error(`执行的错误: ${error}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
    console.error(`stderr: ${stderr}`);
});

spawn 方法

spawn 方法与 exec 类似,但它返回的是一个流(stream),可以用于读取子进程的 stdout 和 stderr。这个方法比 exec 更强大和灵活,因为它可以提供实时的交互。

const { spawn } = require('child_process');
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
    console.error(`stderr: ${data}`);
});

ls.on('close', (code) => {
    console.log(`子进程退出,退出码 ${code}`);
});

在这个例子中,我们创建了一个运行 ls -lh /usr 命令的子进程,并监听 stdout、stderr 和 close 事件。当子进程产生输出时,数据事件就会被触发,我们就可以在回调函数中处理这些数据。当子进程退出时,close 事件会被触发。

注意:在使用 spawn 创建子进程时,你需要将命令和参数分开传递。在上面的例子中,'ls' 是命令,['-lh', '/usr'] 是参数数组。这与 exec 方法不同,exec 方法中命令和参数是一起传递的。

posted @   王铁柱6  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示