Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 真正的分叉UDP服务器断言和核心转储_Node.js_Udp_Fork_Assert - Fatal编程技术网

Node.js 真正的分叉UDP服务器断言和核心转储

Node.js 真正的分叉UDP服务器断言和核心转储,node.js,udp,fork,assert,Node.js,Udp,Fork,Assert,这在节点0.6.19中工作得很完美,但现在失败了 我在node中编写了一个分叉UDP服务器。然而,node没有真正的fork,集群也没有UDP,所以我用C++编写了一个模块,它只调用fork(包含此函数的模块称为“hasher”) 有人知道发生了什么吗?如果您不控制流程中的所有代码,那么fork是非常危险的。可能,分叉的进程现在共享了一些他们不希望共享的东西。这就是为什么分叉是如此糟糕的模式。很难确保这是一个安全的操作。 static Handle<Value> spoon(cons

这在节点0.6.19中工作得很完美,但现在失败了

我在node中编写了一个分叉UDP服务器。然而,node没有真正的fork,集群也没有UDP,所以我用C++编写了一个模块,它只调用fork(包含此函数的模块称为“hasher”)


有人知道发生了什么吗?

如果您不控制流程中的所有代码,那么fork是非常危险的。可能,分叉的进程现在共享了一些他们不希望共享的东西。这就是为什么分叉是如此糟糕的模式。很难确保这是一个安全的操作。
static Handle<Value> spoon(const Arguments& args) // node sees this function as "fork"
{
HandleScope scope;
pid_t rval = fork();
if (rval < 0)
{
    return ThrowException(Exception::Error(String::New("Unable to fork daemon, pid < 0.")));
}
Handle<Value> n = v8::Number::New(rval);
return n;
}
udp_server.bind(argv.udp_listen_port, '0.0.0.0');

// now create multiple children (loop starting with 1 is on purpose)                                                                
for (var i = 1; i < argv.multiple; i++)
{
    var pid = hasher.fork();           
    if (pid == 0)
        break;
}
node-0.10.29: ../deps/uv/src/unix/stream.c:499: uv__server_io: Assertion `events == 1'

failed.

Aborted (core dumped)