Node.js 真正的分叉UDP服务器断言和核心转储
这在节点0.6.19中工作得很完美,但现在失败了 我在node中编写了一个分叉UDP服务器。然而,node没有真正的fork,集群也没有UDP,所以我用C++编写了一个模块,它只调用fork(包含此函数的模块称为“hasher”)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
有人知道发生了什么吗?如果您不控制流程中的所有代码,那么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)