Articles of 产生

用自己的控制台窗口产生新的subprocess

我在node.js中有一个父应用程序,它需要根据需要产生多个工作者应用程序(也在node.js中)。 我已经有他们之间的沟通工作 – 不需要使用任何内置的节点的东西。 现在的问题是,我希望每个工作进程拥有自己的控制台窗口 – 因为我写了很多的控制台,我想留意一下。 我已经看了Node的child_process文档 ,它说,通过设置选项来分离: 在Windows上,将options.detached设置为true可以使subprocess在父进程退出后继续运行。 孩子将有自己的控制台窗口。 但是,当我使用我自己的代码 const Process = require("child_process").spawn; Process(process.argv[0], ["myApplicationPath","otherArgs"],{detached: true,stdio: ['ignore']}); 它不起作用。 子应用程序产生,但没有控制台窗口出现。

为什么thunkify / yield总是返回一个数组?

我有一个名为logInline的thunk (从Co文档改编而来)。 我注意到thunkified get似乎总是yield一个数组。 这是由devise? 这是做这件事,或者它是yield的标准部分? var co = require('co'), get = thunkify(request.get); var logInline = co(function *(){ var google = yield get('http://google.com'); console.log(google[0].statusCode); }) logInline() 注意这里的variables“google”总是一个数组。 为什么? 请注意, request.get通常返回err, response (即没有数组)。 该脚本,BTW,返回200或任何其他响应代码google.com返回。 唉产量文件是相当稀疏的ATM。 编辑: Thunk不总是返回数组。 例如,如果var readFile = thunkify(fs.readFile); : var fileContents = yield readFile('myfile', 'utf8'); log(fileContents); 在这种情况下,fileContents不会在数组中返回。 那么为什么谷歌里面的数组? thunkify似乎有什么东西来控制thunk的回报

Nodejs如何等待subprocess退出或允许响应

我的nodejs应用程序收到一个特定的请求后,产生一个使用spawn的subprocess(我不能使用exec,因为输出很大,不知道是否可以添加callback到产生的进程)准备响应。 我希望subprocess发送响应或主进程等到孩子准备响应并退出。 问题是主stream程不等孩子。 我编写了这样的东西 inputQuery: function(req, res){ var output=""; var query = "printjson(db.getCollectionNames())"; var temp = spawn("mongo", ["mongoweb ", "-eval", query]); temp.on('error', function (err){ console.log(err); }); temp.stdout.on('data', function(data){ output += data; }); temp.stderr.on('data', function(data){ console.log(data); }); temp.on("exit", function(code){ console.log("Output is :" + output); res.send(output); // Either send response here or after the log message below […]

我怎样才能禁用nodejs ChildProcess.spawn标准输出缓冲区?

我想拦截compass watch输出使用以下代码: var spawn = require('child_process').spawn; var child = spawn('compass', ['watch'], { cwd: process.cwd() }); process.on('data', function (data) { console.log('[log] ' + data); }); 我的问题是:我必须保存文件两次覆盖消息出来的标准输出。 这是一个示例输出… node compass.js [log] >>> Compass is watching for changes. Press Ctrl-C to Stop. 我保存完文件后 [log] >>> Change detected at 20:17:19 to: components/_avatar.scss 我第二次保存文件后 [log] overwrite assets/css/modules/projects.css >>> Change detected […]

将产卵过程的标准输出转化为超级上传

我正在努力解决如何获取产生的subprocess的输出,并将该输出提供给多部分MIME上载。 这是我所知道的,据我所知应该工作 var request = require('superagent'); var spawn = require('child_process').spawn; var spawned = spawn('echo', ['hello', 'world']); request.post('http://localhost/api/upload') .attach('file', spawned.stdout) .end(function(res) { console.log("DONE", res); }); 不幸的是,这引发了相当无益的Error: socket hang up来自Node的响应。

sshpass命令在node.js中不起作用

我曾尝试使用node.js spawn()来运行sshpass命令来自动执行ssh。 但它自动从命令行退出,没有任何错误。 这是我使用的代码。 var tail = spawn("sshpass", ["-p", "test", "ssh", "-n", "test@xxx.x.xxx.xxx", "'cat testfile'"]); tail.stdout.on("data", function(data) { readData(data); });

节点:按顺序产生进程,inheritancestdio

我想在节点中顺序启动一系列的cli进程。 我想开始第一个过程,等待它退出,然后开始第二个过程,依此类推。 这些进程是cli程序,所以它们必须inheritancestdio,以便用户可以与每个进行交互。 我在这里的代码产生了第一个进程,但是当它退出(我假设是因为它inheritance了stdio)父进程也退出。 我已经写了它与发电机,但我打开使用任何控制stream库来完成任务。 我试图使用npm包Q,但我无法弄清楚。 var cp = require('child_process'); var co = require('co'); var list = ['item', 'item2']; co(function* spawnTflix () { for (var i=0; i < list.length; i++) { var x = yield sp('program', ['-o', '–search='+list[i]]); } }); function sp (command, args) { return function (fn) { cp.spawn(command, args, { stdio: 'pipe' }); […]

Nodejssubprocess在容器docker中产生

我正在dockerizing一个Node.js HTTP自适应stream媒体Web应用程序。 在Nodejs服务器中,我使用subprocess(spawn)调用FFMPEG将用户上传的文件编码为不同的比特率,之后我再调用MP4Box来突破比特率。 spawn('MP4Box', argDash, {cwd: './uploads'}); spawn('ffmpeg', arrStr, {cwd: './uploads'}); 如何在容器内部运行nodejs服务器时调用这两个程序?

分段错误(核心转储),通过产生的方式从NodeJS调用python脚本

我有python脚本通过统计R打印出长列表(通过PypeR)。 这个python脚本工作得很好。 现在我试图通过child_process的spawnfunction从NodeJS运行这个脚本,但是会失败,并显示以下错误: Traceback (most recent call last): File "pyper_sample.py", line 5, in <module> r=R() File "/home/mehtam/pyper.py", line 582, in __init__ 'prog' : Popen(RCMD, stdin=PIPE, stdout=PIPE, stderr=return_err and _STDOUT or childstderr, startupinfo=info), File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__ errread, errwrite) File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child raise child_exception OSError: [Errno 2] No such file or […]

如何检测节点产生的进程是否仍在运行?

我可以产生一个像这样的过程: var spawn = require('child_process').spawn; var topicListener = spawn('python', ['topic_listener.py','Node.js'], {env: { TWITTER_CONSUMER_SECRET: process.env.TWITTER_CONSUMER_SECRET, TWITTER_CONSUMER_KEY: process.env.TWITTER_CONSUMER_KEY, TWITTER_TOKEN_SECRET: process.env.TWITTER_TOKEN_SECRET, TWITTER_ACCESS_TOKEN: process.env.TWITTER_ACCESS_TOKEN }}); topicListener.stdout.on('data', function (data) { console.log(data.toString()); }); topicListener.stderr.on('data', function (data) { console.log(data.toString()); }); topicListener.on('close', function (code) { console.log("EXITED " + code); }); 所以我当然可以用.on(close, …)来控制它.on(close, …)但是如果一个进程仍然存在,还有什么其他方法可以控制吗?