在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 @ 2025-01-02 06:08  王铁柱6  阅读(18)  评论(0)    收藏  举报