问题标签 [libuv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
792 浏览

c++ - v8、libuv、nodejs、win32 api - 如何调用 EnumWindows 并有回调调用 javascript 函数?

我正在尝试使用 v8 为 node.js 编写一个 C++ 库。EnumWindows我唯一的目标是让 javascript 调用win32 api 函数

EnumWindows方法本身将回调函数作为参数。它将为每个枚举窗口调用该函数,并将窗口句柄传递给它。

我正在尝试让它为每个窗口句柄调用一个 javascript 函数。任何想法如何做到这一点?libuv 看起来很有希望,但看起来我必须是创建线程的人。这不是这里的情况。

0 投票
2 回答
287 浏览

sockets - 如何判断数据到达 HTTP keep-alive 连接?

我正在使用 libuv 实现一个简单的 Web 服务器。目前,我坚持使用保持连接。

根据我对keep-alive的理解,我只是在处理请求后不调用uv_close()已建立的连接(TCP套接字),然后再重用它。

我想知道如何判断新请求到达该连接?也就是说,我应该什么时候调用uv_read_start()这个活动连接?

0 投票
2 回答
362 浏览

javascript - Nodejs进程锁定从阻塞FUSE文件中读取

我有一个 nodejs 网络服务器,它读取文件并提供内容。其中一些文件是 FUSE 虚拟文件,它们可能会在其后备服务等待数据提供时长时间阻止读取。

似乎如果这些读取请求中的 5 个堆积起来,则该进程将不再从任何文件中读取。另外,我不确定如何在必要时终止这些挂起的读取。

这是 nodejs 的限制还是 FUSE 文件系统的行为与 FUSE 的预期不一致?

0 投票
1 回答
744 浏览

c - 与 libuv 不一致的标准输入重定向行为

我正在开发一个基于 libuv 的小型程序。这个程序应该从标准输入中读取用户给定的文本,并根据输入提供结果。以下是该文件的源代码:

上面的程序在没有标准输入重定向的情况下编译和调用后运行良好。例如:

并且管道echo或其他一些过程的结果也会产生正确的结果:

当我尝试从某个常规文件或重定向标准输入时出现问题 /dev/null

以下是崩溃的 gdb 回溯:

有没有人知道为什么会这样?我是否错误地使用了 libuv API?

0 投票
3 回答
1637 浏览

c - libuv 事件循环和 libcurl

我看到下面的示例代码来自一个关于如何将 libuv 与 libcurl 一起使用的示例

主要功能如下所示:

我对如何进行事件循环感到困惑。因为它看起来像当我们执行这一行

循环中根本没有待处理的事件,所以理论上循环不应该立即退出吗?

回调 handle_socket 应该没有任何更改才能运行。curl_perform()在 curl 套接字回调的回调中设置的没有机会运行。

我的理解有什么问题吗?

0 投票
0 回答
328 浏览

c++ - 异步构建 V8 字符串数组

我正在构建一个要与之交互的节点模块,libapt以便我可以列出和控制已安装的包。我通过实现一个函数来获取每个已安装包的名称开始简单。我已经撞墙了。

我目前有这个代码:

这样做的主要问题是您不能在主事件循环以外的线程中使用任何 V8 对象。这意味着我在上面的代码中遇到了段错误。所以我修改了我的代码如下:

这段代码现在可以工作了,但是我现在正在遍历字符串列表并在主事件循环中使用它们制作新的 V8 字符串。我不妨一开始就同步完成这一切。由于包列表的长度可能类似于 30,000 个字符串,因此我不想在 javascript 事件循环中执行此操作。如何异步创建大型字符串数组?

0 投票
1 回答
625 浏览

javascript - 如何在给定文件描述符的情况下打开 nodejs Duplex 流?

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

而不是编写自定义 C++ 模块,我真的很想在纯 javascript 中使用 Node 的方便的花花公子Duplex stream来做到这一点。

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

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

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

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

0 投票
0 回答
663 浏览

c++ - 在 Windows 中将 Redis 与 libuv 一起使用

我正在尝试使用 libuv 作为事件库来编译hiredis (C++) 附带的示例程序。与 Windows 兼容的 Redis 版本使用名为 Win32_Interop 的库。

我遇到了两个问题:

  1. libuv 和 Win32_Interop 都定义了 ssize_t,但它们是相互冲突的类型。

  2. libuv 和 Win32_interop 都使用 WinSocks。将程序与 ws2_32.lib 链接会导致重复定义,不这样做会导致无法解析的外部符号。

我该如何解决这些问题?

0 投票
0 回答
960 浏览

c++ - 在哪里可以获得相关 Mingw 构建的 libgcc_s_sjlj-1.dll?

我正在尝试使用最新的 Mingw 4.8.4 构建一个依赖于 libuv 的应用程序,并且生成的二进制文件要求 libgcc_s_sjlj-1.dll。

  • 我在构建时不能使用 -static (或 -static-libgcc),因为许多其他动态链接的库随后被迫静态链接
  • 我可以看到 libgcc_s_sjlj-1.dll 位于 4.7.0 的 lib 文件夹中,但这在 4.8.4 中不存在
  • 使用 Mingw 4.7.0 中的 libgcc_s_sjlj-1.dll 导致缺少 __gxx_personality_sj0 问题的入口点
  • 尝试按照 README.gcc-4.8.1-4-mingw32 中的描述构建 Migw,但没有出现 libgcc_s_sjlj-1.dll

我真的很感激任何线索下一步该做什么。谢谢你。

0 投票
2 回答
1569 浏览

libuv - libuv 只是 POSIX 系统上 libev 的一个包装器吗?

我真的很困惑libev和libuv。

libuv 只是 POSIX 系统上 libev 的一个包装器吗?

如果不是,那有什么不同呢?