Tag: subprocess

什么需要(“child_process”)实际上做?

当我们打电话给: var p = require(child_process); 我们是否已经创build了一个subprocess ? (如果没有,这里是什么?) 为了进一步解释我的困惑,在我拾起的代码库中,我看到: var childProcess1 = require("child_process"); var _retrieveChild = childProcess1.fork( __dirname + '/backgroundProcesses/DadProcess', { execArgv: ['–debug=5859'] } ); 我在问自己,是从一个subprocess创build另一个进程呢,还是说childProcess1只是一个非常错误的名字?

如何获得node.js中的subprocess内存使用情况?

我知道有一个api process.memoryUsage()来获取当前进程的内存使用情况。 但是,如果我通过child_process.spawn(command,[args],[options])启动一个新的subprocess,并且我得到一个ChildProcess对象,那么如何获得新的进程内存使用?

在nodejs中执行CPU绑定任务的方法

我正在使用nodejs作为解码GET参数并以某种编码格式返回数据的Web服务器。 解码/编码是使用nodejs的encryption模块完成的,这似乎是同步的。 虽然服务单个请求所花的时间足够快,但阻止事件循环使服务在并发性方面performance不佳。 我的要求很简单,使事件循环之外的编码/解码function。 单独的进程(child_process或集群) 这可以是一个单独的过程,只是为了这个目的,但是由于编码/解码将在subprocess中被阻塞,这将停止subprocess接收新消息,即当两个string被编码为subprocess也将是单线程的。 为每个请求分开线程(threads-a-gogo或fiber或node-webworker) 为每个请求创build一个单独的线程来执行编码/解码操作,但是没有一个模块看起来像预期的那样工作,即threads-a-gogo不通过npm安装,光纤没有在运行时创build单独的线程(),node-webworker 不工作 。 有人遇到过类似的问题,或者有一些方法可以通过简单的消息传递轻松地在nodejs中创build线程。

如何分叉另一个模块的进程

TL; DR:如何分叉一个位于当前正在运行的进程之外的进程? 我正在尝试使用child_process的child_process来启动父进程退出的另一个nodejs进程。 我用exec成功执行了这个进程,但是我需要subprocess独立于父进程,所以父进程可以不等待subprocess而退出,因此我试着用detached: true, stdio: 'ignore'出来的spawn进行尝试detached: true, stdio: 'ignore' unref()和unref()过程: 将options.detached设置为true可以使subprocess在父进程退出后继续运行。 spawn('node MY_PATH', [], {detached: true, stdio: 'ignore'}).unref(); 这产生了: node MY_PATH ENOENT错误。 不幸的是我没有解决。 遇到麻烦实现这个spawn和阅读文件再次我想我应该实际使用fork : child_process.fork()方法是child_process.spawn()的一个特例,专门用于产生新的Node.js进程。 fork()没有采取一个命令作为其第一个参数,但是我似乎无法适应的模块,因为我试图作为一个subprocess运行的脚本modulePath在当前正在运行的进程的目录,但在一个他的依赖。 回到起始TL; DR – 如何分叉一个位于当前正在运行的进程之外的进程? 任何帮助将非常感激! 编辑: 提供spawn ENOENT错误的解决scheme也可能非常有用!

NodeJS批处理多处理 – 池中的subprocess(或multithreading)

NodeJS批量多 穿线 处理 – 池中的subprocess。 我知道一个孩子的过程是一个过程,而不是一个线程。 我使用了错误的语义,因为当你提到“multithreading”时,大多数人都知道你的意图是什么。 所以我会把它保留在标题中。 设想一个场景,您不断地使用一个自定义函数或模块来执行多个相似和复杂的事情。 使用所有可用的核心/线程(例如8/16)是child_process.fork() ,这是child_process.fork()的用途。 理想情况下,您将需要一个同步的工作人员和一个控制器发送/callback消息。 node-cpool , fork-pool , child-pool是一些完全可以做到这一点的模块,但是它们似乎是旧的/无法维护的。 有很多类似的模块,但是这些模块似乎是最相关的。 他们都有共同的几个承诺,几乎没有出演,几乎没有分叉,并放弃。 通常情况下,当我找不到任何东西似乎是有意义的任何东西,是有一个更好的方式,我失踪了。 因此我的问题。 我如何有一个pipe理,排队, multithreading 并行fork()的池为我的自定义模块,做一些CPU密集型工作? 像TAGG和webworker-threads这样的multithreading模块是不一样的,因为它们不支持完整的模块(使用二进制编译的组件)。 PS 我现在正在使用fork-pool ,它似乎正是我想要的,有一些怪癖,但是我不能相信这样一个未知的和不受欢迎的模块将是唯一可行的select。

在多核CPU上运行Node Child Process Spawn吗?

当我调用.spawn在Node.js中创build一个新的subprocess时,这是否利用了多核CPU? 参考: https : //nodejs.org/api/child_process.html

如何将parameter passing给child_process.execcallback

有没有办法将额外的parameter passing给callback函数,当我使用child_process.exec(cmd,callback) ? 根据文档,callback函数只接收错误,stdout,sterr。 我最终可能会有一个获得额外参数的unix脚本,运行命令,并将命令的结果和参数输出到标准输出,但也许有更好的方法来做到这一点 谢谢

我如何使节点child_process不断执行

如何连续exec ? 如cd后的ls ? 我试过了 exec = require('child_process').exec; exec('cd ~/', function(){ exec('ls'), function(err, stdout, stderr){ console.log(stdout); // this logs current dir but not ~/'s } } ) exec('cd ~/').exec('ls', function(err, stdout, stderr){ console.log(stdout); })//this also fails because first exec returns a ChildProcess Object but not itself.

nodejs gruntsubprocesscallback函数的例子

你会好心帮助下面一个节点执行命令运行与咕噜的例子? echo命令正在执行,并且创build了hello-world.txt ,但callback函数中的grunt.log.writeln命令不会触发。 var exec = require('child_process').exec, child; child = exec('echo hello, world! > hello-world.txt', function(error, stdout, stderr){ grunt.log.writeln('stdout: ' + stdout); grunt.log.writeln('stderr: ' + stderr); if (error !== null) { grunt.log.writeln('exec error: ' + error); } } ); 参考文献: http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options 从节点subprocess中检索一个值

如何stream入/从节点中的文件描述符?

fs.createReadStream()和fs.createWriteStream()只支持文件path,但是我需要从文件描述符(从subprocess传入/从subprocess)读取(或写入)。 注意我需要Streams,所以fs.open/fs.read/fs.write是不够的。