Articles of 生成

Node.js产生:如何检查进程立即退出

在我的应用程序中,我需要产生一个debugging程序进程给予一个转储文件进行debugging,说“example.dmp”。 如果找不到转储文件,则不是转储文件。 该过程将成功产生,但会立即退出。 我想在asynchronous函数中抛出一个错误消息,稍后可以尝试捕获。 const spawnDebuggerProcess = (debuggerConfigs) => { let debuggerProcess = spawn(config.debuggerName, debuggerConfigs) debuggerProcess.on('exit', (code, signal) => { console.log('pid ' + `${debuggerProcess.pid}`) console.log('child process exited with ' + `code ${code} and signal ${signal}`) }) debuggerProcess.on('error', (error) => {}) if (debuggerProcess.pid !== undefined) { return debuggerProcess } throw externalError.createError({ name: externalError.SPAWN_DEBUGGER_PROCESS_ERROR, description: 'Failed to […]

我怎样才能通过节点产卵的所有当前的环境variables?

我在Node中产生子任务的方式如下: function createChildProc(prog, params0, cmdAndEnv) { var spawn = require('child_process').spawn; return spawn(prog, params0, cmdAndEnv); } 其中cmdAndEnv手动包含在初始启动节点期间创build的环境variables。 有没有办法让节点自动将当前的环境variables注入到孩子的环境中?而不是手动发布所有的环境variables到产生的孩子中。

将代码从subprocessexec更改为产生

我有节点的应用程序,我使用child_process。 工作好的exec api,问题是有maxBuffer我们有麻烦的事情,因此我想改变它与产卵工作 以前的代码是(这段代码工作正常,我只需要通过cmd和选项,它正在做这个工作…) var child = child_process.exec(cmd,options, function (error) { …. }); 现在我改变它产卵,它不工作 var child = child_process.spawn(cmd, options); child.stdout.on('data', function (data) { console.log('stdout: ' + data); }); child.stderr.on('data', function (data) { console.log('stderr: ' + data); }); 这里我得到错误 Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34) stderr: execvp(): No such file or directory 任何想法我在这里错过了什么?

nodejs添加双引号到命令参数?

例: ffmpeg -i test.mkv -metadata title="Test 123" -c copy temp.mkv ffmpeg看到""Test 123"" 。 它发生在spawn()和execFile() 如果我在Windowsshell运行相同的命令ffmpeg正确地看到它作为"Test 123" 那么nodejs怎么了? 这里是nodejs代码: var process = spawn('ffmpeg', [ '-i', inFile, '-metadata', 'title="Test 123"', '-c', 'copy', outFile ]);

多命令shell AS分离subprocessWITH spawn()IN Node.js

供参考: https : //nodejs.org/api/child_process.html#child_process_options_detached 大家好, 所以我需要spawn一个subprocess,由于exec不允许options.detached & child.unref(); ,这意味着它可以与父母分离,允许孩子在自己的父母上运行和完成,反之亦然父母(在我们的特定情况下,父母的过程可以在长期的孩子之前死亡,在这种情况下,更新是完成而不需要像exec那样等待孩子)。 我们有一个由节点(父)应用程序构build的长连接("… ; … ; …")命令,但像spawn("echo stuff >>stderr.log")不起作用,只有spawn('ls', [-l]) ,我显然不能链接命令(因为它在文档中也被引用,并在SO上多次引用。 TLDR; 我们需要使用spawn ,但spawn不能处理链式shell命令。 我现在真的需要在bash中编写我的命令,然后执行它,这是否是唯一的select? 谢谢

我怎样才能从nodejs刷新subprocess?

我使用spawn从nodejs调用一个可执行的C程序,但是C程序似乎没有每次都被刷新。 然后,当缓冲区已满(4K)或subprocess退出时,我的节点程序只能输出subprocess的stdout。 简单来说,这两个部分的代码应该是: invoke.js var spawn = require("child_process").spawn; var ps = spawn("./echo"); ps.stdout.on("data", (data) => { console.log(`${data}`); }); process.on("SIGINT", ps.kill); echo.c #include <stdio.h> #include <signal.h> #include <unistd.h> static volatile int keep = 1; void intHandler(int d){ keep = 0; } int main(){ signal(SIGINT, intHandler); int count = 0; while(keep) { printf("%d hello world!\r\n", ++count); sleep(1); […]

subprocess什么时候杀

当我的节点项目启动它创build一个subprocess,这只需要做一次,所以我把这个代码放在server.js文件,在subprocess中,我执行命令,如npm安装…我的问题是: 我需要杀死这个过程吗? 如果节点应用程序closures之前会发生什么事情,我可以杀死它?

没有收到来自nodejs派生进程的stdout

我试图让nodejs与冒险 (一种基于文本的旧游戏)进行交互。 这个想法是将冒险作为一个subprocess打开,然后通过写入stdin并在stdout上放置一个事件监听器来玩游戏。 当游戏开始时,它打印一个初始的: 欢迎来到冒险! 你想要说明吗? 所以为了说明我的问题,我有一个nodejs + express实例: var childProcess = require('child_process'); var spawn = childProcess.spawn; var child = spawn('adventure'); console.log("spawned: " + child.pid); child.stdout.on('data', function(data) { console.log("Child data: " + data); }); child.on('error', function () { console.log("Failed to start child."); }); child.on('close', function (code) { console.log('Child process exited with code ' + code); […]

从nodejs运行gradlew

试图从nodeJS运行gradlew: const spawn = require('child_process').spawn; const path = require('path'); function run() { var path_dir = path.resolve('./../movies/VanillaApp/android'); var options = { cwd: path_dir }; const ls = spawn('gradlew', ['assembleRelease'], options); ls.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); ls.stderr.on('data', (data) => { console.log(`stderr: ${data}`); }); ls.on('close', (code) => { console.log(`child process exited with code ${code}`); }); } […]

Node.js使用产生两个subprocess,然后两个subprocess如何交换?

我有一个名为“A”的ELF程序,“A”是一个tcp服务器,我有一个名为“B”的ELF程序,“B”是一个tcp客户端。 当“B”开始运行时,如果服务器准备就绪,它将向服务器发送消息。 现在我必须使用Node.js来运行“A”和“B”作为两个subprocess,我怎样才能使“A”运行早于“B”? 我这样说: socket.on('xxx', function() { var A = spawn("A", …); … var B = spawn("B", …); setTimeout(B.sendToA, 500); … }); 有什么好的想法? 感谢您的帮助!