Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何从nodejs子进程(在windows和linuxish中)获取cwd(当前工作目录)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图通过nodejs运行脚本:

cd ..
doSomethingThere[]

但是,为此,我需要执行多个子进程,并在这些进程之间传递环境状态。我想做的是:

var exec = require('child_process').exec;
var child1 = exec('cd ..',function (error,stdout,stderr) {
  var child2 = exec('cd ..',child1.environment,stderr) {
  });
});

或至少:

var exec = require('child_process').exec;
var child1 = exec('cd ..',{Cwd: child1.process.cwd()},stderr) {
  });
});

我如何做到这一点?

解决方法

用父目录启动孩子作为cwd:

var exec = require('child_process').exec;
var path = require('path')

var parentDir = path.resolve(process.cwd(),'..');
exec('doSomethingThere',{Cwd: parentDir},stderr) {
  // if you also want to change current process working directory:
  process.chdir(parentDir);
});

更新:如果你想检索孩子的cwd:

var fs = require('fs');
var os = require('os');
var exec = require('child_process').exec;

function getCWD(pid,callBACk) {
  switch (os.type()) {
  case 'Linux':
    fs.readlink('/proc/' + pid + '/cwd',callBACk); break;
  case 'Darwin':
    exec('lsof -a -d cwd -p ' + pid + ' | tail -1 | awk \'{print $9}\'',callBACk);
    break;
  default:
    callBACk('unsupported OS');
  }
}

// start your child process
//    note that you can't do like this,as you launch sHell process 
//    and sHell's child don't change it's cwd:
// var child1 = exec('cd .. & sleep 1 && cd .. sleep 1');
var child1 = exec('some process that changes cwd using chdir syscall');

// watch it changing cwd:
var i = seTinterval(getCWD.bind(null,child1.pid,console.log),100);
child1.on('exit',clearInterval.bind(null,i));

大佬总结

以上是大佬教程为你收集整理的node.js – 如何从nodejs子进程(在windows和linuxish中)获取cwd(当前工作目录)全部内容,希望文章能够帮你解决node.js – 如何从nodejs子进程(在windows和linuxish中)获取cwd(当前工作目录)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。