Articles of 进程

浏览捆绑电子应用程序的主要进程文件

我正在构build一个电子应用程序,目前使用browserify渲染器(网页)文件像任何其他的JavaScript前端。 我也想用browserify捆绑主要的进程文件。 但是,bro​​wswerify无法find像剪贴板,ipc,浏览器窗口,应用程序等模块内置的电子… 在我的main.js文件中,它是电子应用程序的入口点。 我有: const ipc = require('ipc'); const clipboard = require('clipboard'); const BrowserWindow = require('browser-window'); const app = require('app'); const yargs = require('yargs'); const yargs会正常加载,因为它在node_modeuls文件夹中,而browserify可以解决这个问题。 然而,其他四个项目不能被browserifyfind,因此失败了我的构build。 [11:49:17] Finished 'development' after 17 ms Error: Cannot find module 'ipc' from '<path>' Error: Cannot find module 'clipboard' from '<path>' Error: Cannot find module 'browser-window' from '<path>' […]

node.jssubprocess更改一个目录并运行进程

我尝试使用subprocess在node.js中运行外部应用程序,如下所示 var cp = require("child_process"); cp.exec("cd "+path+" && ./run.sh",function(error,stdout,stderr){ }) 但是,当我尝试运行它卡住,没有进入callback run.sh启动一个服务器,当我用cp.exec执行它,我期望它asynchronous运行,这样我的应用程序不会等到服务器终止。 在callback中,我想与服务器一起工作。 请帮我解决这个问题。

Node.jssubprocess问题与参数 – 报价问题?,FFMPEG问题?

我需要能够从我的Node.js应用程序执行FFMPEG。 我相信这个问题可能与正确指定命令行参数有关,而不是特定于FFMPEG,但是由于我一直无法缩小这个问题,我提出了我的整个问题。 我可以成功执行命令提示符下面的命令: C:\Brad\ffmpeg.exe -f dshow -i audio="Microphone (SoundMAX Integrated" testaaa.mp3 FFMPEG按预期启动,从我的audio设备录制audio,并写入MP3文件。 现在,我尝试在Node.js应用程序中做同样的事情 : childProcess = child_process.spawn('C:\\Brad\\ffmpeg.exe', ['-f', 'dshow', '-i', 'audio="Microphone (SoundMAX Integrated"', 'testaaa.mp3']); childProcess.stderr.on('data', function (data) { console.log('StdioSource received data from STDERR: ' + data); }); 在Node.js中,FFMPEG失败! 错误很简单: [dshow @ 0000000001eded80] Could not find audio device. audio="Microphone (SoundMAX Integrated": Input/output error 考虑到可能由于某种原因,这是一个奇怪的权限错误,我决定从我的Node应用程序中运行带有-list_devices true FFMPEG, […]

在nodejs上启动新的进程

我正在和node.js一起工作,我希望当有一个像./calculate这样的url请求时,开始一个新的进程来完成这些复杂的计算,而且即使调用它的脚本已经完成,我也希望这个进程继续下去。 可能吗? 谢谢。

杀死一个bash脚本不会终止subprocess

我写了一个testing脚本运行另一个脚本来启动服务器来testing。 当testing完成后, SIGKILL消息被发送到服务器进程,但是当再次运行testing脚本时,服务器会抛出一个EADDRINUSE错误(我在一个node.js环境中),这意味着服务器试图挂载的端口目前正在使用中。 我们试图用SIGKILL杀死的进程仍在运行。 我不认为这是一个特定于节点的问题,而是我的末端教育缺乏教育如何工作。 这里有一些细节,这是我的脚本启动scripts/start-node.sh : #!/bin/bash node_modules/.bin/babel-node –stage 0 index.js 这是我的节点服务器称为index.js (我还没有创作任何process事件侦听器): Http.createServer(…).listen(PORT, () => console.log(`Server listening on ${PORT}`)) 启动脚本由节点child_process模块控制: var child = child_process.spawn('scripts/start-node.sh') // Later… child.kill('SIGKILL')

Node.js的进程间事件发送器?

目前,我在应用程序中使用EventEmitter2作为消息总线,我非常喜欢它。 无论如何,现在我需要一个消息总线,它不仅在进程中工作,而且还在进程之间。 我理想的候选人会… …与EventEmitter2(一个“插入replace”)API兼容, …没有专门的服务器或外部服务(如数据库,消息队列等),仅使用操作系统资源, …用纯JavaScript编写, …在内存中运行,所以它不需要持久性。 我不需要的东西: 它不需要在Windows上运行,OS X和Linux都可以。 如果它只能在一台机器上运行,那就没有必要了。 任何想法或提示? PS:如果你可以推荐一个可用的产品,那也挺好的,但是如果你能指出我自己如何做无服务器的东西,那也没关系。

父进程退出时检测

我将有一个用于处理Web服务器重新启动的父进程。 它会发信号通知孩子停止收听新的请求,孩子会通知父母它已经停止收听,然后家长会发信号通知新孩子可以开始收听。 这样,我们可以完成less于100ms的停机时间,以重新启动该级别(我也有一个零宕机的孙子重启也,但这并不总是足以重新启动)。 服务pipe理器会在关机的时候杀死父母。 孩子如何检测父母已经结束? 信号使用subprocess的标准input和标准输出发送。 也许我可以检测到标准inputstream的结束? 我希望避免轮询间隔。 另外,如果可能,我希望这是一个非常快速的检测。

Node.js拦截process.exit

所以我想在我的node.js程序的末尾运行一个shell命令,然后在退出之前等待输出/打印它。 我尝试了process.on('exit',function(){})并在那里运行了子exec执行命令,但是在callback之前退出了程序。 所以,而是我使用process.exit封闭,但我得到了一些奇怪的结果。 代码的基础是: process.exit = (function(old_exit){ return function(code){ var exec = require('child_process').exec; var child; child = exec("my shell command", function (error, stdout, stderr) { if (error !== null) { console.log('exec error: ' + error); } console.log(stdout); //I first had this as the concluding line: old_exit.apply(process,arguments); //and I also tried old_exit.apply(process,[]); //and even (which I […]

分叉一个subprocess并注入依赖

我目前有一个模块是阻塞的操作,所以我正在考虑把它变成一个subprocess,而不是叉。 如果我想这样做,那么我当然需要修改我的模块的架构。 该模块要求dependency injection通过调用模块作为一个函数,传入依赖关系,如下所示: var dependency = { name: "Bob" } require('worker')(dependency) 然后在我的worker模块中: module.exports = function (dependency) { // Outputs { name: "Bob" } console.log(dependency) } 我怎样才能把这个例子变成一个分叉的subprocess呢?

Node.js:process.argv与process.ARGV

我注意到Node定义了process.argv和process.ARGV (大写)。 后者在文档中没有提到,在任何情况下,我都遇到了同样的对象。 ARGV只是一个历史性的搁置,还是它有一个目的?