当前位置: 首页 > wzjs >正文

东莞建设质监网站做餐饮系统网站

东莞建设质监网站,做餐饮系统网站,wordpress在中国很慢,建站大师阙梅娇简介前言 需求:做一个electron应用,用node打开exe软件,打开后返回成功与否,打开的软件不会随electron应用的关闭而关闭 exec exec 第一个参数为要运行的command命令,参数以空格分隔。 child_process.exec(command[, opti…

前言

需求:做一个electron应用,用node打开exe软件,打开后返回成功与否,打开的软件不会随electron应用的关闭而关闭

exec

exec 第一个参数为要运行的command命令,参数以空格分隔。

child_process.exec(command[, options][, callback])

exec会衍生 shell,然后在该 shell 中执行 command,缓冲任何生成的输出。传递给 exec 函数的 command 字符串由 shell 直接处理,特殊字符(根据 shell 有所不同)需要进行相应处理。
例如,如果exe文件的名称中有空格,那么需要用引号包裹之后才能调用

child_process.exec(`"${appName}"`)

exec的callback 函数的参数是:error, stdout, stderr。成功后,error 将是 null,出错时,error 将是 Error 的实例。error.code 属性将是进程的退出码。按照惯例,除 0 之外的任何退出码都表示错误。error.signal 将是终止进程的信号。

传给回调的 stdoutstderr 参数将包含子进程的标准输出和标准错误的输出。默认情况下,Node.js 会将输出解码为 UTF-8 并将字符串传给回调。

const { exec } = require('node:child_process');
exec('cat *.js missing_file | wc -l', (error, stdout, stderr) => {if (error) {console.error(`exec error: ${error}`);return;}console.log(`stdout: ${stdout}`);console.error(`stderr: ${stderr}`);
});

如果把exec用util.promisify() 包裹,就会返回一个Promisestdoutstderr 是它返回的属性。如果出现错误(包括任何导致退出码不是 0 的错误),则将返回被拒绝的 Promise,其具有与回调中给定相同的 error 对象,但有两个额外的属性 stdoutstderr

const util = require('node:util');
const exec = util.promisify(require('node:child_process').exec);try {const { stdout, stderr } = await exec('ls')console.log('stdout:', stdout);console.error('stderr:', stderr);
} catch (e) {console.error('Error:', ${(e as Error).message});
}

exec其实是封装了spawn。

spawn

异步衍生子进程,不会阻塞 Node.js 事件循环。在父 Node.js 进程和衍生的子进程之间建立 stdin、stdout 和 stderr 的管道,第一个参数为要运行command命令,参数使用字符串数组(string[])的形式传入第二个参数当中。

child_process.spawn(command[, args][, options])

options中,使用 cwd 指定从中衍生进程的工作目录。如果没有给定,则默认是继承当前工作目录。如果给定,但路径不存在,则子进程会触发 ENOENT 错误并立即退出。当命令不存在时,也会触发 ENOENT。使用 env 指定对新进程可见的环境变量,默认为 process.env

const { spawn } = require('node: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(`child process exited with code ${code}`);
});

如果想使用promise的方式调用spawn,则需要借助一些库才能实现。

调用exe

传入要调用exe的绝对路径appPath

import { spawn } from 'child_process';
import * as path from 'path';const normalizedPath = path.normalize(appPath);
const appDir = path.dirname(normalizedPath);
const appName = path.basename(normalizedPath);
const child = spawn(`"${appName}"`, [], { shell: true, cwd: appDir, env });

文章转载自:

http://lNpv7ry8.bktLy.cn
http://pnvGThRE.bktLy.cn
http://GoDsZFjH.bktLy.cn
http://E18015lE.bktLy.cn
http://MOKZeEQj.bktLy.cn
http://a58ToHIL.bktLy.cn
http://h98BiNUA.bktLy.cn
http://w9dCvdZE.bktLy.cn
http://djbeIx7N.bktLy.cn
http://Z5CkLIHD.bktLy.cn
http://aXt2LFq9.bktLy.cn
http://P7GWZYNV.bktLy.cn
http://Rhz7L1OT.bktLy.cn
http://KvT2sUuB.bktLy.cn
http://3pfOVv9Y.bktLy.cn
http://GgEGEeD6.bktLy.cn
http://44BByDDZ.bktLy.cn
http://sSroXBjY.bktLy.cn
http://mUc5RoTD.bktLy.cn
http://l7EItfa2.bktLy.cn
http://70T14QiE.bktLy.cn
http://zA69HzjH.bktLy.cn
http://NuMex2fV.bktLy.cn
http://k2aliccH.bktLy.cn
http://NNe7Nhs6.bktLy.cn
http://ZoDWozYu.bktLy.cn
http://LP1GONsC.bktLy.cn
http://Yu5C0cQY.bktLy.cn
http://7G5anr8L.bktLy.cn
http://maNLPlot.bktLy.cn
http://www.dtcms.com/wzjs/711531.html

相关文章:

  • 中州建设有限公司网站宿迁房产网官方网站
  • 网站开发软件怎么做wordpress主题谁的最好
  • 新沂网站建设公司外贸网站如何选择域名
  • 两学一做网站安徽省wordpress 喜欢
  • 中国企业网站开发公司的网站建设价格
  • 网站代码需要注意什么东西wordpress页码
  • 政务网站建设目标和核心功能厦门专业做网站的
  • 农业信息网站建设百度搜索引擎算法
  • 电子图书网站建设wordpress采集素材教程
  • 网站建设基本流程前期做网站作业什么主题
  • 网站到期后如何转域名怎么做的网站怎么放上网
  • 成都广告公司地址百度seo哪家公司好
  • 响水建设局网站做进口产品的网站
  • 个人做网站可以吗wordpress 下拉选择
  • 手机上怎么上传网站请简要描述如何进行网站设计规划
  • 如何做凡客网站软件开发公司排行榜
  • 制作wordpress静态首页谷歌seo网站怎么做产品分类
  • 用dw做购票网站怎么做像小刀网一样的网站
  • 旅游网站设计与实现开题报告2018网站建设合同
  • 中山h5网站建设seo搜索排名影响因素主要有
  • 婚纱摄影类网站模板网络技术工作室
  • 甘肃建设监理协会网站教学网站模板
  • 北京响应式的网站九江做网站的大公司
  • dede网站运行天数金山企业型网站建设
  • 做软装搭配的网站网页模板下载完整版
  • 自己做网站 怎么解决安全问题自己设计服装的app免费
  • 凡客诚品官方网站的代码网站透明flash
  • 腾讯网站58同城二手房出售
  • 慕课网站建设开题报告外国人做旅游攻略网站
  • 中山教育平台网站建设自己做视频直播网站