我创build了一个节点脚本来启动subprocess,并且我已经成功地将其stdoutredirect到控制台。 但是,如果subprocess创build一个嵌套的subprocess,那么我无法得到它的标准输出或标准input。 我有一个模糊的想法,我必须创buildstream,并将其pipe道父进程,但我不知道现在。 有人可以请一个方法来实现它。 下面是我现在启动subprocess的代码 spawn = require('child_process').spawn; ls = spawn "ruby" , [ @editor.getPath() ] ls.stdout.on 'data', (data) -> console.log data.toString() ls.stderr.on 'data', (data) -> console.log data.toString()
比方说,我有一个节点进程运行。 有没有办法在退出的运行过程中注入新的环境variables。
我在MEAN堆栈proggraming,所以我有我的app.js,我想build立一个进程,将采取命令从它运行的shell(process.stdin) 目前我已经尝试过: const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question('What do you think of Node.js? ', (answer) => { // TODO: Log the answer in a database console.log(`Thank you for your valuable feedback: ${answer}`); rl.close(); }); 但它写入我的input两次,退出1行后。 我需要一个循环读取函数,并从我那里接受无限的命令。 我怎么才能得到它 ?
我在NodeJs上工作,我的问题是: 进程A在计算机A上运行,而进程B在计算机B上运行,现在我想向他们两人广播一条消息,我该怎么做呢?
我有: $ cat ./test #!/bin/bash gulp dev & 然后运行它: $ ./test … (..命中input以获得命令提示符)脚本中的命令启动node进程。 但我没有在后台进程中: $ jobs -p 打印空的列表。 所以我们的目标是能够在单个脚本中列出/终止(多个)启动和分离的进程。 如何?
这段代码得到了派生进程的输出。 哪里不对? 节点版本是v0.10.22 var spawn = require('child_process').spawn; var what = 'java'; var spawned = spawn(what, ['-version']); console.log('starting `'+what+' -version`'); spawned.stdout.setEncoding('utf8'); spawned.stdout.on('data', function (data) { console.log(data); }); spawned.on('close', function (code) { console.log('process exit code ' + code); }); var whendone = function() { console.log('done'); }; setTimeout(whendone,5000); 正如你所看到的,我甚至添加了一些超时等待启动的过程完成。
是否有可能从本身内部完全重新启动正在运行的单线程节点进程? 我想象一下服务器的步骤是这样的: closures监听套接字 通过child_process.fork或child_process.spawn将一个孩子child_process.spawn ,将process.argv交给孩子。 process.exit()父(不应该杀死孩子) 子再次绑定侦听套接字 可以这样做还是我完全错了?
所以,我有一个简单的应用程序(我写了)写入stdout 。 当我自己运行它,输出正在打印罚款。 现在,当我用节点产生进程时…没有任何事情发生(除了一个消息说过程已经完成) 这是我的代码: var spawn = require('child_process').spawn; helper = spawn("myApp", []); helper.stdout.on('data', function(data) { console.log("GOT: " + data); }); helper.stdout.on('end', function(data) { console.log("FINISHED: " + data); }); helper.on('exit', function(code) { console.log("CLOSED!"); }); 这里是输出: FINISHED: undefined CLOSED! 是的,就是这样。 这是怎么回事? 我错过了什么吗?
我有我的应用程序在http://talkwithstranger.com/上运行,我已经在AWS EC2上部署了它。 我使用这个命令 sudo nohup node index.js & 即使closures我的terminal并退出SSH,也要继续运行我的Node JS服务器。 然而,每当我醒来2天后,我发现节点服务器本身自动停止。 我通过使用检查正在运行的进程 ps -ef 和我的节点脚本不在那里。 谷歌浏览器说,网站的DNS没有find,因为nodeJS快递不是当然服务我的HTML文件。 但为什么它停止? 是什么导致这个意外的closures我的服务器每两天后? 我必须再次手动运行nohup再次运行。 nohup是否有时间到期或什么? 有任何想法吗? 提前致谢
在bash你可以source或. 在当前的上下文中运行一些bash脚本。 所以,如果你有例如文件foo与alias bar='echo bam'在其中,当你运行它像 $ . foo 它会从文件foo中将这个别名发送到当前的上下文中。 我知道,如果我通常使用#!/usr/bin/env node第一行来运行节点脚本,那么这个脚本在子shell中运行,或者作为单独的进程运行。 我想避免这一点,并使节点脚本作用于我当前的bash进程(上下文)。 我怎样才能运行节点脚本,改变我当前的bash上下文? ps:任何例子都不错。 节点脚本只能改变我的目录,但它也必须发生在我当前的bash上下文中。 ps2:小问题:如果在节点中是不可能的(我很难相信这个),或者它非常复杂,那么在其他语言中是可能的吗? 像PHP,Java,Ruby(我不问C,因为它很明显:)如果是这样,请给我一些例子。