利用NodeJS的子进程(child_process)调用系统命令的方法分享

yizhihongxing

当我们需要在NodeJS中执行一些系统命令时,可以使用NodeJS提供的子进程模块(child_process)。下面,我将演示如何使用这个模块来调用系统命令的方法。

调用系统命令的方法

使用child_process模块调用系统命令分为三种方法:spawn/exec/execFile。

spawn方法

spawn方法是一种处理较大数据量命令的方法,它启动一个子进程来执行命令,该方法接收三个参数:command(命令), args(参数数组), options(可选配置项)。下面是使用spawn方法的示例代码:

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

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

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

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

上面的代码执行了ls -lh /usr命令并打印输出和错误信息,同时打印子进程的退出码。

exec方法

exec方法是一种处理简单数据量命令的方法,它启动一个shell来执行命令,该方法接收三个参数:command(命令), options(可选配置项), callback(回调函数)。下面是使用exec方法的示例代码:

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

exec('ls -lh /usr', (err, stdout, stderr) => {
  if (err) {
    console.error(`错误:${err}`);
    return;
  }
  console.log(`输出:${stdout}`);
  console.error(`错误:${stderr}`);
});

上面的代码执行了ls -lh /usr命令并打印输出和错误信息,同时处理了错误的回调函数。

execFile方法

execFile方法是一种处理简单数据量命令且无需使用shell的方法,该方法接收四个参数:file(命令), args(参数数组), options(可选配置项), callback(回调函数)。下面是使用execFile方法的示例代码:

const { execFile } = require('child_process');
const child = execFile('node', ['--version'], (error, stdout, stderr) => {
  if (error) {
    throw error;
  }
  console.log(stdout);
});

console.log('程序执行完毕!');

上面的代码执行了node --version命令并打印版本信息,同时打印出“程序执行完毕!”字样。

示例说明

  1. 调用系统命令创建文件夹
const { exec } = require('child_process');
exec('mkdir testfolder', (err, stdout, stderr) => {
  if (err) {
    console.error(`执行出错: ${err}`);
    return;
  }
  console.log(`执行成功: ${stdout}`);
});

上述代码中的“mkdir testfolder”为创建文件夹的命令,借助exec()方法生成新的子进程执行该命令,并在回调函数中处理输出结果和错误信息。

  1. 使用spawn方法运行Python脚本
const { spawn } = require('child_process');

const py = spawn('python', ['script.py']);

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

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

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

上述代码中,'python'代表Python环境的执行命令,'script.py'为要执行的Python脚本名称,通过spawn()方法开启新的Python子进程,并监听其输出和错误信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用NodeJS的子进程(child_process)调用系统命令的方法分享 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Nodejs学习笔记之NET模块

    首先我要给大家介绍的是Node.js中的NET模块,它是一个用于创建TCP服务器和客户端的核心模块。我们可以使用该模块创建各种TCP连接,并进一步使用它来实现各种网络应用,如聊天室、游戏等等。 一、创建TCP服务器 使用NET模块,我们可以很容易地创建一个TCP服务器。以下是一个简单的示例: const net = require(‘net’); const…

    node js 2023年6月8日
    00
  • Node.js Domain 模块实例详解

    Node.js Domain 模块可以捕获异步操作的错误,并且可以防止错误被抛出到整个应用程序中。在本文中,我们将通过实例说明 Domain 模块的详细使用方法。 1. 安装 首先,需要安装 Node.js 模块。 npm install domain 或者,您可以在应用程序中使用以下命令添加依赖项: npm install –save domain 2.…

    node js 2023年6月8日
    00
  • Node.js插件的正确编写方式

    这里是“Node.js插件的正确编写方式”的完整攻略。 什么是Node.js插件? Node.js插件是用C/C++编写的二进制模块,它们使Node.js能够与不同的操作系统和其他编程语言协作。 插件的编写方式 以下是Node.js插件的正确编写方式。 步骤1:安装node-gyp node-gyp是一个Node.js本地构建工具,允许你编写C/C++插件并…

    node js 2023年6月8日
    00
  • 基于nodejs+express4.X实现文件下载的实例代码

    让我来为您详细讲解如何基于 nodejs + express4.X 实现文件下载的实例代码。 一、安装 express 和 express-download 在使用 Express 实现文件下载前,需要先安装 express 和 express-download 这两个包: npm install express express-download –sav…

    node js 2023年6月8日
    00
  • Node.js使用http模块实现后台服务器流程解析

    Node.js是一种基于事件驱动的异步I/O框架,拥有轻量级且高效的特点,在服务器端开发中使用较为广泛。使用Node.js作为后台服务器框架搭建网站,可以使用Node.js的http模块来处理客户端和服务端的请求。下面是如何使用http模块实现后台服务器的完整攻略: 一、安装Node.js 首先需要安装Node.js,可以到官网https://nodejs.…

    node js 2023年6月8日
    00
  • NodeJS 创建目录和文件的方法实例分析

    让我来为你详细讲解一下“NodeJS 创建目录和文件的方法实例分析”这个主题的完整攻略。 什么是 NodeJS? NodeJS 是一个基于 Chrome V8 引擎的 JavaScript 运行时,能够利用 JavaScript 的事件驱动、非阻塞 I/O 等特性,提供了一种轻量级的、高效的服务器端运行环境。 创建目录 在 NodeJS 中可以使用 fs 模…

    node js 2023年6月8日
    00
  • Egret引擎开发指南之创建项目

    创建项目是使用Egret引擎进行游戏开发的第一步,本文将详细讲解如何在Egret引擎中创建项目。 步骤 1:安装Egret引擎 在开始创建项目之前,您需要先安装Egret引擎,您可以在Egret官网下载并安装最新版本的Egret引擎。 步骤 2:创建项目 打开Egret Wing IDE(Egret中最常用的IDE),点击“新建项目”按钮来创建一个新项目。 …

    node js 2023年6月8日
    00
  • 实例详解Node.js 函数

    实例详解Node.js 函数 Node.js函数 在Node.js中,函数也是一种数据类型,可以被当成变量进行传递和操作。Node.js函数的定义和传递都具有很大的灵活性,可以让开发者非常方便地实现各种业务逻辑。 Node.js函数可以分为普通函数、箭头函数和生成器函数。其中,普通函数和箭头函数其实是非常相似的,主要区别在于箭头函数没有自己的this,它的t…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部