nodejs文档

  • 每一个程序都会开启一个进程
  • 进程是 chrome.exe 程序的一个执行实例
  • 进程下面会开多个线程

child_process.exec(command[, options][, callback])
=> execSync 同步版本

  1. const child_process = require('child_process')
  2. child_process.exec('"C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe"',(error,stdout,stderr)=>{ // 错误 //标准输出 // 错误信息 windows下需要用\转义一下
  3. console.log(error)
  4. console.log(stdout)
  5. console.log(stderr)
  6. })
  7. => 也可以返回一个流
  8. const stream = child_process.exec('ls' ./)
  9. stream.stdout.on('data',(chunk)=>{console.log(chunk)})
  1. //改写成Promise的形式
  2. const util = require('util')
  3. const child_process = require('child_process')
  4. const {exec} = child_process
  5. const exec1 = util.promisify(exec)
  6. exec1('"C:\\Program\ Files\ (x86)\\Google\\Chrome\\Application\\chrome.exe"')
  7. .then((data)=>{console.log(data.stdout)})
  8. //用户如果用 ; 或者 && 符号将语句隔开 就可以注入新的命令比较危险
  9. // 所以exec尽量不用 改为execFile
  10. const userInput = '. && rm -rf /' // ' ; rm -rf /'
  11. exec1(`ls ${userInput}`).then(()=>{console.log()})
  12. child_process.execFile(file[, args][, options][, callback])
  13. 只能以数组的方式传入,不能注入,支持流
  1. const child_process = require('child_process')
  2. const {execFile} = child_process
  3. const userInput = ".";
  4. execFile("ls",["-la",userInput],{
  5. cwd:"C:\\",
  6. env:{NODE_ENV:'development'}
  7. },(error,stdout)=>{
  8. console.log(error)
  9. console.log(stdout)
  10. })

child_process.execFile(file[, args][, options][, callback])