标签: spawn

Bash:产生当父脚本退出时退出的子进程

我想在 Bash 中生成多个子进程,但我希望父脚本保持运行,这样发送到父脚本的信号也会影响生成的子进程。

这不会这样做:

parent.bash:

#!/usr/bin/bash

spawnedChildProcess1 &
spawnedChildProcess2 &
spawnedChildProcess3 &
Run Code Online (Sandbox Code Playgroud)

parent.bash立即结束,并且生成的进程继续独立运行。

bash spawning spawn child-process

3
推荐指数
1
解决办法
4774
查看次数

如何使用子进程承诺

var promise = require('child-process-promise').spawn;

promise('some_command_producing_output')
    .then(function (result) {
        ...
    })
    .catch(function (err) {
        ...
    });
Run Code Online (Sandbox Code Playgroud)

我想要的是在命令在标准输出中生成输出后添加一些处理。所以最后我想创建一个像这样使用的函数:

RunCommandAndProcess('some_command_producing_output')
    .then(function (result) {
        ...
    })
    .catch(function (err) {
        ...
    });
Run Code Online (Sandbox Code Playgroud)

该函数应该使用子进程承诺中的承诺,等待产生成功结果并返回处理数据的承诺。

javascript spawn child-process node.js

3
推荐指数
1
解决办法
3089
查看次数

如何将 promisify() 与 spawn() 函数一起用于“child_process”?

我有以下代码示例,现在我有了关于如何utils.promisify();仅使用解决此问题的想法!不承诺!

const spawn = child_process.spawn('docker', ['--version']);

spawn.stdout.on('data', (data) => {
   process.stdout.write(data);
});

spawn.on('error', () => {
   process.stderr.write(error);
   process.exit(1);
});
Run Code Online (Sandbox Code Playgroud)

第二个代码示例运行良好。

const promisifiedExecFile = promisify(child_process.execFile);

async function test() {
  const version = await promisifiedExecFile('docker', ['--version']);
  console.log(version);
}

test();
Run Code Online (Sandbox Code Playgroud)

spawn child-process node.js

3
推荐指数
1
解决办法
3610
查看次数

隐秘的Erlang错误

好的,所以我最近开始学习erlang,但对它不断返回的错误感到困惑.我做了一些更改,但我一直在收到错误.据我所知,语法是正确的,但显然我做错了.看一看...

-module(pidprint).
-export([start/0]).

dostuff([]) ->
    receive
        begin ->
     io:format("~p~n", [This is a Success])
 end.

sender([N]) ->
    N ! begin,
    io:format("~p~n", [N]).


start() ->
    StuffPid = spawn(pidprint, dostuff, []),
    spawn(pidprint, sender, [StuffPid]).
Run Code Online (Sandbox Code Playgroud)

基本上我想编译脚本,调用start,生成"dostuff"进程,将其进程标识符传递给"sender"进程,然后将其打印出来.最后,我想使用最初传入发送方的进程标识符将原子"begin"发送到"dostuff"进程.

当我尝试使用c()编译脚本时,我会遇到错误.他们来了..

./pidprint.erl:6: syntax error before: '->'
./pidprint.erl:11: syntax error before: ','
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

syntax erlang spawn

2
推荐指数
1
解决办法
259
查看次数

Erlang产生问题

我在erlang中遇到'spawn'的问题,似乎进程只是在一段时间后死亡.这是简单的代码:

-module(simple).
-export([server/1, client/1, owner/1, spawn_n/2, start/1, main/1]).

server(State) ->
receive
    {request,Return_PID} ->
        io:format("SERVER ~w: Client request recieved from ~w~n", [self(),Return_PID]),
        NewState = State + 1,
        Return_PID ! {hit_count,NewState},
        server(NewState);

    {server_owner,Owner_PID} ->
        io:format("SERVER ~w: Owner request recieved from ~w~n", [self(), Owner_PID]),
        Owner_PID ! {hit_count,State},
        server(State);
    reset ->
        io:format("SERVER ~w: State reset to zero.~n", [self()]),
        server(0)

end.



client(Server_Address) ->
Server_Address ! {request, self()},
receive
    {hit_count,Number} ->
        io:format("CLIENT ~w: Hit count was ~w~n", [self(),Number])
end.



owner(Server_PID) ->
timer:sleep(random:uniform(100)),
Server_PID ! {server_owner,self()},
receive …
Run Code Online (Sandbox Code Playgroud)

erlang spawn

2
推荐指数
2
解决办法
1628
查看次数

如何获取生成的java进程的PID

我正在编写几个java程序,并且在完成我想做的任何事情后,需要在单独的JVM中终止/清理.为此,我需要获取我正在创建的java进程的PID.

java pid process spawn

2
推荐指数
1
解决办法
3284
查看次数

在Node.js中生成进程的正确语法是什么?

我正在努力跟随

http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

努力做到

./node_modules/.bin/mocha --reporter json -u tdd
Run Code Online (Sandbox Code Playgroud)

我试过了

var mocha    = spawn('./node_modules/.bin/mocha', ['--reporter json -u tdd']);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

error: unknown option `--reporter json -u tdd'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

mocha.js spawn node.js

2
推荐指数
1
解决办法
1337
查看次数

产生比在gevent池中更多的线程

据我所知,gevent中池的想法是随时限制并发请求的总数,数据库或API等.

假设我有这样的代码,我产生的greenlets比我有更多的greenlets Pool:

import gevent.pool

pool = gevent.pool.Pool(50)
jobs = []
for number in xrange(300):
    jobs.append(pool.spawn(do_something, number))

total_result = [x.get() for x in jobs]
Run Code Online (Sandbox Code Playgroud)

尝试生成第51个请求时的实际行为是什么?第51个请求何时处理?

pool spawn gevent

2
推荐指数
1
解决办法
2176
查看次数

使用MPI_Comm_spawn创建子进程

有人可以解释为什么即使我将进程数设置为1以上,也只在下面的代码中创建了两个进程子进程.每个MPI_Comm_spawn可以使用下面的代码创建两个子进程,在使用的代码中使用mpirun创建的每个进程将调用MPI_Comm_spawn一次并将创建2(#define NUM_SPAWNS 2)子进程,所以如果我调用N进程然后子进程2*N进程必须创造孩子.但这不会发生.

在下面的例子中,孩子的数量必须是4*2 = 8.但......

例如:

:〜$ mpirun -np 4 ./spawn_example

输出:

我是父母.

我是父母.

我是父母.

我是父母.

我是产卵的.

我是产卵的.

以下示例代码说明了MPI_Comm_spawn.

c mpi openmpi spawn

2
推荐指数
2
解决办法
4257
查看次数

在grunt.util.spawn中调用grunt.config.set似乎没有任何效果

我正在尝试在我的项目的Grunt配置中设置当前的Git SHA,但是当我尝试从另一个任务访问它时它不可用,我缺少什么?

grunt.registerTask('sha', function () {
  var done   = this.async();

  grunt.util.spawn({
    cmd: 'git',
    args: ['rev-parse', '--short', 'HEAD']
  }, function (err, res) {
    if (err) {
      grunt.fail.fatal(err);
    } else {
      grunt.config.set('git', {sha: res.stdout});
      if (grunt.option('debug') || grunt.option('verbose')) {
        console.log("[sha]:", res.stdout);
      }
    }
    done();
  });
});
Run Code Online (Sandbox Code Playgroud)

运行任务后,我希望配置在另一个任务配置中可用:

requirejs: {
  dist: {
    ...
    out: '<%= app.dist %>/scripts/module_name.<%= git.sha %>.js'
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

所以有什么问题?

问题是Require JS正在写入文件public/scripts/module_name..js,SHA在配置中不可用(文件名应该是public/scripts/module_name.d34dc0d3.js).

更新:

问题是我正在运行requirejs任务grunt-concurrent,因此Grunt配置不可用requirejs.

grunt.registerTask('build', [
  ...
  'getsha',
  'concurrent:dist',
  ... …
Run Code Online (Sandbox Code Playgroud)

javascript spawn node.js gruntjs

2
推荐指数
1
解决办法
939
查看次数

标签 统计

spawn ×10

node.js ×4

child-process ×3

erlang ×2

javascript ×2

bash ×1

c ×1

gevent ×1

gruntjs ×1

java ×1

mocha.js ×1

mpi ×1

openmpi ×1

pid ×1

pool ×1

process ×1

spawning ×1

syntax ×1