mirror of
https://github.com/neovim/neovim.git
synced 2026-08-03 10:39:47 +08:00
Problem: Nvim shows `(libuv) kqueue(): Too many open files` on macos. ref https://github.com/neovim/neovim/issues/40238 Solution: Add a healthcheck for this situation.
21 lines
576 B
Lua
21 lines
576 B
Lua
-- OS/process utils.
|
|
|
|
local M = {}
|
|
|
|
--- Counts (approximate) open file descriptors for this process. Works on Linux/macOS/BSD.
|
|
---@return integer? # Number of open fds, or nil if `/dev/fd` failed (fds exhausted, or unavailable/Windows).
|
|
function M.count_open_fds()
|
|
local n = 0
|
|
for _, _, err in vim.fs.dir('/dev/fd', { err = true }) do
|
|
-- If `/dev/fd` scan failed (e.g. EMFILE when fds exhausted), count would be misleading.
|
|
if err then
|
|
return nil
|
|
end
|
|
n = n + 1
|
|
end
|
|
-- Discount the scan's own descriptor.
|
|
return math.max(0, n - 1)
|
|
end
|
|
|
|
return M
|