【问题标题】:How can I open a nodejs Duplex stream given a file descriptor?如何在给定文件描述符的情况下打开 nodejs Duplex 流?
【发布时间】:2014-06-28 07:36:31
【问题描述】:

我正在将现有程序移植到 nodejs。在这个程序中,我打开一个文件描述符,然后将其交给一个线程,该线程在其上调用 poll 以确定它何时可读。

与其编写自定义 C++ 模块,我真的很想在纯 JavaScript 中使用 Node 的便利花花公子 Duplex stream

例如,我想做这样的事情:

var device = new PollDuplexStream(fileDescriptor);

device.on('data', function(data) {
    // data handling logic here
});

...

var chunk = new Buffer(...);
device.write(chunk);

这似乎应该存在,但我没有看到它在哪里。也许我只是瞎了眼?在上面的示例中,PollDuplexStream 在现实世界中的等价物是什么?

请注意,我正在明确寻找以文件描述符而不是路径开头的解决方案,否则我只会从 fs.createReadStreamfs.createWriteStream 创建自己的解决方案。

我也不在乎它在内部调用 poll - 事实上,我更喜欢它在内部使用 libuv 的 uv_poll_*

【问题讨论】:

  • var stream = new net.Socket({ fd : fd })
  • fd 不是用于套接字有关系吗?
  • 应该适用于套接字和管道
  • 是的,但我的 fd 两者都不是。这是一个字符设备。
  • 然后试试tty.ReadStreamtty.WriteStream。相关讨论:github.com/joyent/node/issues/7101

标签: javascript node.js polling libuv


【解决方案1】:

您需要创建一个使用 uv_poll_t 句柄的二进制插件,它能够轮询任意文件描述符的可读性/可写性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    相关资源
    最近更新 更多