Nvim 的 :help
頁面,由 產生,來源為 原始碼,並使用 tree-sitter-vimdoc 解析器。
vim.uv.version()
的形式公開)。uv
模組,但也可以在其他 Lua 環境中使用。local uv = vim.uv
local server = uv.new_tcp()
server:bind("127.0.0.1", 1337)
server:listen(128, function (err)
assert(not err, err)
local client = uv.new_tcp()
server:accept(client)
client:read_start(function (err, chunk)
assert(not err, err)
if chunk then
client:write(chunk)
else
client:shutdown()
client:close()
end
end)
end)
print("TCP server listening at 127.0.0.1 port 1337")
uv.run() -- an explicit run call is necessary outside of luvit
uv
。此模組主要由名稱與其原始 libuv 版本相對應的函式組成。例如,libuv 函式 uv_tcp_bind
在 uv.tcp_bind() 中有一個 luv 版本。目前,只有兩個非函式欄位:uv.constants
和 uv.errno
,它們是表格。uv.tcp_bind(server, host, port)
也可以寫成 server:bind(host, port)
來調用。請注意,第一個參數 server
變成物件,而 tcp_
從函式名稱中移除。方法形式會在下方記錄存在的地方。callable
:一個 function
;或一個帶有 __call
元方法的 table
或 userdata
buffer
:一個 string
或一個 string
的循序 table
threadargs
:nil
、boolean
、number
、string
或 userdata
類型的可變參數 (...
);參數數量限制為 9 個。uv.errno
公開,但用於處理它們的函式不會向 luv 使用者公開。相反,如果遇到內部錯誤,luv 函式會向呼叫者返回一個可斷言的 nil, err, name
元組。nil
慣用地表示失敗err
是一個字串,格式為 {name}: {message}
{name}
是 uv_err_name
內部提供的錯誤名稱{message}
是 uv_strerror
內部提供的人類可讀訊息name
是用於建構 err
的相同字串fail
虛擬類型。0
以指示成功,或者有時什麼都不返回。這些情況將在下面記錄。UV_
前綴),其值是負數。有關更多詳細資訊,請參閱 Libuv 的「錯誤常數」頁面。 (https://docs.libuv.org/en/v1.x/errors.html#error-constants)E2BIG
:參數列表過長。EACCES
:權限被拒絕。EADDRINUSE
:地址已在使用中。EADDRNOTAVAIL
:地址不可用。EAFNOSUPPORT
:地址族不受支援。EAGAIN
:資源暫時不可用。EAI_ADDRFAMILY
:地址族不受支援。EAI_AGAIN
:暫時性故障。EAI_BADFLAGS
:ai_flags 值錯誤。EAI_BADHINTS
:hints 的值無效。EAI_CANCELED
:請求已取消。EAI_FAIL
:永久性故障。EAI_FAMILY
:ai_family 不受支援。EAI_MEMORY
:記憶體不足。EAI_NODATA
:沒有地址。EAI_NONAME
:未知的節點或服務。EAI_OVERFLOW
:參數緩衝區溢位。EAI_PROTOCOL
:解析的協定未知。EAI_SERVICE
:服務對 socket 類型不可用。EAI_SOCKTYPE
:socket 類型不受支援。EALREADY
:連線已在進行中。EBADF
:錯誤的檔案描述符。EBUSY
:資源忙碌或已鎖定。ECANCELED
:操作已取消。ECHARSET
:無效的 Unicode 字元。ECONNABORTED
:軟體導致連線中止。ECONNREFUSED
:連線被拒絕。ECONNRESET
:連線被對等方重設。EDESTADDRREQ
:需要目標地址。EEXIST
:檔案已存在。EFAULT
:系統呼叫參數中的錯誤地址。EFBIG
:檔案過大。EHOSTUNREACH
:主機無法連線。EINTR
:中斷的系統呼叫。EINVAL
:無效的參數。EIO
:I/O 錯誤。EISCONN
:socket 已連線。EISDIR
:在目錄上進行的非法操作。ELOOP
:遇到過多的符號連結。EMFILE
:開啟的檔案過多。EMSGSIZE
:訊息過長。ENAMETOOLONG
:名稱過長。ENETDOWN
:網路已關閉。ENETUNREACH
:網路無法連線。ENFILE
:檔案表格溢位。ENOBUFS
:沒有可用的緩衝區空間。ENODEV
:沒有此類裝置。ENOENT
:沒有此類檔案或目錄。ENOMEM
:記憶體不足。ENONET
:機器不在網路上。ENOPROTOOPT
:協定不可用。ENOSPC
:裝置上沒有剩餘空間。ENOSYS
:函式未實作。ENOTCONN
:socket 未連線。ENOTDIR
:不是目錄。ENOTEMPTY
:目錄不是空的。ENOTSOCK
:在非 socket 上進行 socket 操作。ENOTSUP
:socket 不支援操作。EOVERFLOW
:值對於定義的資料類型而言過大。EPERM
:操作不允許。EPIPE
:管道損壞。EPROTO
:協定錯誤。EPROTONOSUPPORT
:協定不受支援。EPROTOTYPE
:socket 的協定類型錯誤。ERANGE
:結果過大。EROFS
:唯讀檔案系統。ESHUTDOWN
:在傳輸端點關閉後無法傳送。ESPIPE
:無效的搜尋。ESRCH
:沒有此類處理程序。ETIMEDOUT
:連線逾時。ETXTBSY
:文字檔案忙碌。EXDEV
:不允許跨裝置連結。UNKNOWN
:未知錯誤。EOF
:檔案結尾。ENXIO
:沒有此類裝置或地址。EMLINK
:連結過多。ENOTTY
:裝置不適合的 ioctl。EFTYPE
:不適當的檔案類型或格式。EILSEQ
:非法位元組序列。ESOCKTNOSUPPORT
:socket 類型不受支援。integer
string
uv_loop_t
— 事件迴圈loop_close()
。只有在迴圈已完成執行且所有開啟的控制代碼和請求都已關閉後,才呼叫此函數,否則它將傳回 EBUSY
。0
或 fail
mode
:string
或 nil
(預設值:"default"
)"once"
:輪詢 I/O 一次。請注意,如果沒有待處理的回呼函數,此函數會封鎖。完成時 (沒有剩餘活動的控制代碼或請求) 傳回 false
,如果預期會有更多回呼函數 (表示您應該在未來某個時間再次執行事件迴圈),則傳回 true
。"nowait"
:輪詢 I/O 一次,但如果沒有待處理的回呼函數,則不會封鎖。完成時 (沒有剩餘活動的控制代碼或請求) 傳回 false
,如果預期會有更多回呼函數 (表示您應該在未來某個時間再次執行事件迴圈),則傳回 true
。boolean
或 fail
uv.run()
,但如果您直接使用 luv 繫結,則需要在註冊初始事件回呼函數集之後呼叫此函數,以啟動事件迴圈。option
:string
...
:取決於 option
,請參閱下方"block_signal"
:在輪詢新事件時封鎖訊號。loop_configure() 的第二個引數是訊號名稱 (以小寫字串表示) 或訊號編號。此操作目前僅針對 "sigprof"
訊號實作,以在使用取樣分析器時抑制不必要的喚醒。請求其他訊號將會失敗並傳回 EINVAL
。"metrics_idle_time"
:累積事件迴圈在事件提供者中花費的閒置時間量。此選項是使用 metrics_idle_time()
所必需的。uv.loop_configure("block_signal", "sigprof")
0
或 fail
ENOSYS
錯誤;這表示平台不支援迴圈選項。nil
。string
或 nil
true
;否則,傳回 false
。boolean
或 fail
uv.run("nowait")
結合使用,以在一個執行緒中輪詢,並在另一個執行緒中執行事件迴圈的回呼函數integer
或 nil
integer
integer
callback
:callable
callback
。-- Example usage of uv.walk to close all handles that
-- aren't already closing.
uv.walk(function (handle)
if not handle:is_closing() then
handle:close()
end
end)
uv_req_t
— 基本請求uv_req_t
是所有 libuv 請求類型的基本類型。req:cancel()
0
或 fail
req:get_type()
string, integer
uv_handle_t
— 基本控制代碼uv_handle_t
是所有 libuv 控制代碼類型的基本類型。此處定義的所有 API 函數都適用於任何控制代碼類型。handle:is_active()
true
;如果控制代碼處於非活動狀態,則傳回 false
。「活動」的意義取決於控制代碼的類型boolean
或 fail
handle:is_closing()
true
;否則,傳回 false
。boolean
或 fail
handle:close([callback])
callback
:callable
或 nil
callback
。在釋放記憶體之前,必須在每個控制代碼上呼叫此函數。callback
仍會延遲到事件迴圈的下一次迭代。這讓您有機會釋放與控制代碼相關聯的任何資源。uv_connect_t
或 uv_write_t
) 會被取消,並以 ECANCELED
非同步呼叫其回呼函數。handle:ref()
handle:unref()
handle:has_ref()
true
;否則,傳回 false
。boolean
或 fail
handle:send_buffer_size([size])
size
:integer
或 nil
(預設值:0
)size
(或 0
),則會傳回目前的傳送緩衝區大小;否則,會使用 size
設定新的傳送緩衝區大小。integer
或 fail
(如果 size
為 nil
或 0
)0
或 fail
(如果 size
不是 nil
且不是 0
)handle:recv_buffer_size([size])
size
:integer
或 nil
(預設值:0
)size
(或 0
),則會傳回目前的傳送緩衝區大小;否則,會使用 size
設定新的傳送緩衝區大小。integer
或 fail
(如果 size
為 nil
或 0
)0
或 fail
(如果 size
不是 nil
且不是 0
)handle:fileno()
EINVAL
。EBADF
。integer
或 fail
handle:get_type()
string, integer
uv_timer_t
— 定時器 handleuv_timer_t userdata
或 fail
-- Creating a simple setTimeout wrapper
local function setTimeout(timeout, callback)
local timer = uv.new_timer()
timer:start(timeout, 0, function ()
timer:stop()
timer:close()
callback()
end)
return timer
end
-- Creating a simple setInterval wrapper
local function setInterval(interval, callback)
local timer = uv.new_timer()
timer:start(interval, interval, function ()
callback()
end)
return timer
end
-- And clearInterval
local function clearInterval(timer)
timer:stop()
timer:close()
end
timer:start(timeout, repeat, callback)
timer
:uv_timer_t userdata
timeout
:integer
repeat
:integer
callback
:callable
timeout
和 repeat
的單位為毫秒。timeout
為零,則回呼函式會在下一個事件迴圈迭代時觸發。如果 repeat
為非零值,則回呼函式會在 timeout
毫秒後第一次觸發,然後在 repeat
毫秒後重複觸發。0
或 fail
timer:stop()
timer
:uv_timer_t userdata
0
或 fail
timer:again()
timer
:uv_timer_t userdata
EINVAL
。0
或 fail
timer:set_repeat(repeat)
timer
:uv_timer_t userdata
repeat
:integer
timer:get_repeat()
timer
:uv_timer_t userdata
integer
timer:get_due_in()
timer
:uv_timer_t userdata
integer
uv_prepare_t
— 準備 handlelocal prepare = uv.new_prepare()
prepare:start(function()
print("Before I/O polling")
end)
uv_prepare_t userdata
prepare:start(callback)
prepare
:uv_prepare_t userdata
callback
:callable
0
或 fail
prepare:stop()
prepare
:uv_prepare_t userdata
0
或 fail
uv_check_t
— 檢查 handlelocal check = uv.new_check()
check:start(function()
print("After I/O polling")
end)
uv_check_t userdata
check:start(callback)
check
:uv_check_t userdata
callback
:callable
0
或 fail
check:stop()
check
:uv_check_t userdata
0
或 fail
uv_idle_t
— 閒置 handlelocal idle = uv.new_idle()
idle:start(function()
print("Before I/O polling, no blocking")
end)
uv_idle_t userdata
idle:start(callback)
idle
:uv_idle_t userdata
callback
:callable
0
或 fail
idle:stop()
idle
:uv_idle_t userdata
0
或 fail
uv_async_t
— 非同步 handlelocal async
async = uv.new_async(function()
print("async operation ran")
async:close()
end)
async:send()
callback
:callable
...
:傳遞到/從 uv.async_send(async, ...)
傳遞的 threadargs
uv_async_t userdata
或 fail
async:send(...)
async
:uv_async_t userdata
...
:threadargs
0
或 fail
uv.async_send(async)
的呼叫,也就是說,並非每次對它的呼叫都會產生回呼函式的執行。例如:如果回呼函式被呼叫之前,uv.async_send()
被連續呼叫 5 次,則回呼函式只會被呼叫一次。如果回呼函式被呼叫後再次呼叫 uv.async_send()
,則它將會再次被呼叫。uv_poll_t
— 輪詢 handleuv_poll_t
用於任何其他目的;uv_tcp_t、uv_udp_t 等提供了比 uv_poll_t
更快且更具擴展性的實作,尤其是在 Windows 上。fd
:integer
uv_poll_t userdata
或 fail
fd
:integer
uv_poll_t userdata
或 fail
poll:start(events, callback)
poll
: uv_poll_t userdata
events
: string
或 nil
(預設值: "rw"
)callback
:callable
err
: nil
或 string
events
: string
或 nil
events
可以是:"r"
、"w"
、"rw"
、"d"
、"rd"
、"wd"
、"rwd"
、"p"
、"rp"
、"wp"
、"rwp"
、"dp"
、"rdp"
、"wdp"
或 "rwdp"
,其中 r
代表 READABLE
(可讀取)、w
代表 WRITABLE
(可寫入)、d
代表 DISCONNECT
(斷線),而 p
代表 PRIORITIZED
(優先)。一旦偵測到事件,將會呼叫回呼函式,並將狀態設定為 0,且將偵測到的事件設定在 events 欄位。0
或 fail
uv.poll_start()
是可以的。這麼做會更新正在監看的事件遮罩。poll:stop()
poll
: uv_poll_t userdata
0
或 fail
uv_signal_t
— 信號處理 -- Create a new signal handler
local signal = uv.new_signal()
-- Define a handler function
uv.signal_start(signal, "sigint", function(signal)
print("got " .. signal .. ", shutting down")
os.exit(1)
end)
uv_signal_t userdata
或 fail
signal:start(signum, callback)
signal
: uv_signal_t userdata
signum
: integer
或 string
callback
:callable
signum
: string
signal:start_oneshot(signum, callback)
signal
: uv_signal_t userdata
signum
: integer
或 string
callback
:callable
signum
: string
0
或 fail
signal:stop()
signal
: uv_signal_t userdata
0
或 fail
uv_process_t
— 程序處理 path
: string
options
: table
(請參閱下方)on_exit
: callable
code
: integer
signal
: integer
local stdin = uv.new_pipe()
local stdout = uv.new_pipe()
local stderr = uv.new_pipe()
print("stdin", stdin)
print("stdout", stdout)
print("stderr", stderr)
local handle, pid = uv.spawn("cat", {
stdio = {stdin, stdout, stderr}
}, function(code, signal) -- on exit
print("exit code", code)
print("exit signal", signal)
end)
print("process opened", handle, pid)
uv.read_start(stdout, function(err, data)
assert(not err, err)
if data then
print("stdout chunk", stdout, data)
else
print("stdout end", stdout)
end
end)
uv.read_start(stderr, function(err, data)
assert(not err, err)
if data then
print("stderr chunk", stderr, data)
else
print("stderr end", stderr)
end
end)
uv.write(stdin, "Hello World")
uv.shutdown(stdin, function()
print("stdin shutdown", stdin)
uv.close(handle, function()
print("process closed", handle, pid)
end)
end)
options.args
- 以字串列表形式表示的命令列引數。第一個字串不應是要執行的程式路徑,因為該路徑已透過 path
提供。在 Windows 上,這會使用 CreateProcess,它會將引數串連成一個字串。這可能會導致一些奇怪的錯誤(請參閱下文的 options.verbatim
,針對 Windows)。options.stdio
- 設定將提供給子程序的檔案描述符。慣例是第一個條目是 stdin、stdout 和 stderr。(注意:在 Windows 上,只有在子程序使用 MSVCRT 執行階段時,子程序才能使用第三個之後的檔案描述符。)options.env
- 設定新程序的環境變數。options.cwd
- 設定子程序的目前工作目錄。options.uid
- 設定子程序的使用者 ID。options.gid
- 設定子程序的群組 ID。options.verbatim
- 如果為 true,則在將引數列表轉換為命令列字串時,不要將任何引數放在引號中,或執行任何其他跳脫。此選項僅在 Windows 系統上有意義。在 Unix 上,會直接忽略它。options.detached
- 如果為 true,則以分離狀態產生子程序 - 這會使其成為程序群組領導者,並有效地讓子程序在父程序結束後繼續執行。請注意,除非父程序在子程序的程序 handle 上呼叫 uv.unref(),否則子程序仍會保持父程序的事件迴圈活動。options.hide
- 如果為 true,則隱藏通常會建立的子程序主控台視窗。此選項僅在 Windows 系統上有意義。在 Unix 上,會直接忽略它。options.stdio
條目可以有多種形式。nil
佔位符表示忽略子程序中的該 fd。on_exit
。uv_process_t userdata
、integer
process:kill(signum)
process
: uv_process_t userdata
signum
: integer
或 string
或 nil
(預設值: sigterm
)0
或 fail
pid
: integer
signum
: integer
或 string
或 nil
(預設值: sigterm
)0
或 fail
process:get_pid()
process
: uv_process_t userdata
integer
uv_stream_t
— 串流 handle stream:shutdown([callback])
uv_shutdown_t userdata
或 fail
stream:listen(backlog, callback)
backlog
指示核心可能會佇列的連線數量,與 listen(2)
相同。當收到新的連入連線時,會呼叫回呼函式。0
或 fail
stream:accept(client_stream)
0
或 fail
server:listen(128, function (err)
local client = uv.new_tcp()
server:accept(client)
end)
stream:read_start(callback)
0
或 fail
stream:read_start(function (err, chunk)
if err then
-- handle read error
elseif chunk then
-- handle data
else
-- handle disconnect
end
end)
stream:read_stop()
0
或 fail
stream:write(data, [callback])
data
可以是 Lua 字串或字串表格。如果傳入表格,C 後端會使用 writev 在單個系統呼叫中傳送所有字串。callback
用於得知寫入何時完成。uv_write_t userdata
或 fail
stream:write2(data, send_handle, [callback])
data
: buffer
callback
:callable
或 nil
err
: nil
或 string
ipc
選項 true
初始化管道。uv_write_t userdata
或 fail
send_handle
必須是 TCP socket 或管道,其為伺服器或連線(監聽或已連線狀態)。繫結的 socket 或管道將被視為伺服器。stream:try_write(data)
data
: buffer
integer
或 fail
stream:try_write2(data, send_handle)
integer
或 fail
stream:is_readable()
true
,否則傳回 false
。boolean
stream:is_writable()
true
,否則傳回 false
。boolean
stream:set_blocking(blocking)
blocking
: boolean
0
或 fail
stream:get_write_queue_size()
integer
uv_tcp_t
— TCP 控制代碼flags
: string
或 nil
"unix"
、"inet"
、"inet6"
、"ipx"
、"netlink"
、"x25"
、"ax25"
、"atmpvc"
、"appletalk"
或 "packet"
。uv_tcp_t userdata
或 fail
tcp:open(sock)
tcp
: uv_tcp_t userdata
sock
: integer
0
或 fail
tcp:nodelay(enable)
tcp
: uv_tcp_t userdata
enable
: boolean
0
或 fail
tcp:keepalive(enable, [delay])
tcp
: uv_tcp_t userdata
enable
: boolean
delay
: integer
或 nil
delay
是以秒為單位的初始延遲,當 enable 為 false
時會忽略。0
或 fail
tcp:simultaneous_accepts(enable)
tcp
: uv_tcp_t userdata
enable
: boolean
0
或 fail
tcp:bind(host, port, [flags])
tcp
: uv_tcp_t userdata
host
: string
port
: integer
flags
: table
或 nil
ipv6only
: boolean
host
應該是 IP 位址,而不是網域名稱。任何 flags
都會使用欄位 ipv6only
等於 true
或 false
的表格設定。uv.tcp_bind()
、uv.listen() 或 uv.tcp_connect() 看到 EADDRINUSE
錯誤。也就是說,成功呼叫此函式並不保證呼叫 uv.listen() 或 uv.tcp_connect() 也會成功。0
可讓作業系統指派臨時埠。您稍後可以使用 uv.tcp_getsockname() 查詢。0
或 fail
tcp:getpeername()
tcp
: uv_tcp_t userdata
table
或 fail
ip
: string
family
: string
port
: integer
tcp:getsockname()
tcp
: uv_tcp_t userdata
table
或 fail
ip
: string
family
: string
port
: integer
tcp:connect(host, port, callback)
tcp
: uv_tcp_t userdata
host
: string
port
: integer
callback
:callable
err
: nil
或 string
uv_connect_t userdata
或 fail
local client = uv.new_tcp()
client:connect("127.0.0.1", 8080, function (err)
-- check error and carry on.
end)
tcp:write_queue_size()
tcp:close_reset([callback])
tcp
: uv_tcp_t userdata
callback
:callable
或 nil
uv.tcp_close_reset()
呼叫。socktype
: string
、integer
或 nil
(預設值:stream
)protocol
: string
、integer
或 nil
(預設值:0)flags1
: table
或 nil
nonblock
: boolean
(預設值:false
)flags2
: table
或 nil
nonblock
: boolean
(預設值:false
)socktype
必須是 "stream"
、"dgram"
、"raw"
、"rdm"
或 "seqpacket"
其中之一。protocol
設定為 0 或 nil 時,將根據 socket 的網域和類型自動選擇。當 protocol
指定為字串時,它會使用 getprotobyname(3)
函式查詢(範例:"ip"
、"icmp"
、"tcp"
、"udp"
等)。nonblock
:開啟指定的 socket 控制代碼,以用於 OVERLAPPED
或 FIONBIO
/`O_NONBLOCK` I/O 用途。建議用於 libuv 將使用的控制代碼,一般情況下不建議使用。AF_UNIX
的 socketpair(2)
。table
或 fail
[1, 2]
: integer
(檔案描述符)-- Simple read/write with tcp
local fds = uv.socketpair(nil, nil, {nonblock=true}, {nonblock=true})
local sock1 = uv.new_tcp()
sock1:open(fds[1])
local sock2 = uv.new_tcp()
sock2:open(fds[2])
sock1:write("hello")
sock2:read_start(function(err, chunk)
assert(not err, err)
print(chunk)
end)
uv_pipe_t
— 管道控制代碼local pipe = uv.new_pipe(false)
pipe:bind('/tmp/sock.test')
pipe:listen(128, function()
local client = uv.new_pipe(false)
pipe:accept(client)
client:write("hello!\n")
client:close()
end)
ipc
: boolean
或 nil
(預設值: false
)ipc
參數是一個布林值,用於指示此管道是否將用於程序之間的句柄傳遞。uv_pipe_t userdata
或 fail
pipe:open(fd)
pipe
: uv_pipe_t userdata
fd
:integer
0
或 fail
pipe:bind(name)
pipe
: uv_pipe_t userdata
name
: string
0
或 fail
pipe:connect(name, [callback])
pipe
: uv_pipe_t userdata
name
: string
callback
:callable
或 nil
err
: nil
或 string
uv_connect_t userdata
或 fail
pipe:getsockname()
pipe
: uv_pipe_t userdata
string
或 fail
pipe:getpeername()
pipe
: uv_pipe_t userdata
string
或 fail
pipe:pending_instances(count)
pipe
: uv_pipe_t userdata
count
: integer
pipe:pending_count()
pipe
: uv_pipe_t userdata
integer
pipe:pending_type()
pipe
: uv_pipe_t userdata
uv.pipe_pending_type()
返回,並呼叫 uv.accept(pipe, handle)
。string
pipe:chmod(flags)
pipe
: uv_pipe_t userdata
flags
: string
flags
為:"r"
、"w"
、"rw"
或 "wr"
,其中 r
為 READABLE
,w
為 WRITABLE
。此函數為阻塞式的。0
或 fail
read_flags
: table
或 nil
nonblock
: boolean
(預設值:false
)write_flags
: table
或 nil
nonblock
: boolean
(預設值:false
)write
文件描述符,並從 read
文件描述符讀取。產生的句柄可以傳遞給 pipe_open
,與 spawn
一起使用,或用於任何其他目的。nonblock
:開啟指定的 socket 控制代碼,以用於 OVERLAPPED
或 FIONBIO
/`O_NONBLOCK` I/O 用途。建議用於 libuv 將使用的控制代碼,一般情況下不建議使用。O_CLOEXEC
標誌設定的 pipe(2)
。table
或 fail
read
: integer
(文件描述符)write
: integer
(文件描述符)-- Simple read/write with pipe_open
local fds = uv.pipe({nonblock=true}, {nonblock=true})
local read_pipe = uv.new_pipe()
read_pipe:open(fds.read)
local write_pipe = uv.new_pipe()
write_pipe:open(fds.write)
write_pipe:write("hello")
read_pipe:read_start(function(err, chunk)
assert(not err, err)
print(chunk)
end)
pipe:pipe_bind(name, flags)
pipe
: uv_pipe_t userdata
name
: string
flags
: integer
或 table
或 nil
(預設值: 0)type(flags)
為 number
,則必須為 0
或 uv.constants.PIPE_NO_TRUNCATE
。type(flags)
為 table
,則必須為 {}
或 { no_truncate = true|false }
。type(flags)
為 nil
,則使用預設值 0
。EINVAL
而不執行綁定。0
或 fail
pipe:connect2(name, [flags], [callback])
pipe
: uv_pipe_t userdata
name
: string
flags
: integer
或 table
或 nil
(預設值: 0)callback
:callable
或 nil
err
: nil
或 string
Flags
:type(flags)
為 number
,則必須為 0
或 uv.constants.PIPE_NO_TRUNCATE
。type(flags)
為 table
,則必須為 {}
或 { no_truncate = true|false }
。type(flags)
為 nil
,則使用預設值 0
。EINVAL
而不執行綁定操作。uv_connect_t userdata
或 fail
uv_tty_t
— TTY 句柄-- Simple echo program
local stdin = uv.new_tty(0, true)
local stdout = uv.new_tty(1, false)
stdin:read_start(function (err, data)
assert(not err, err)
if data then
stdout:write(data)
else
stdin:close()
stdout:close()
end
end)
fd
:integer
readable
: boolean
uv_tty_t userdata
或 fail
tty:set_mode(mode)
tty
: uv_tty_t userdata
mode
: integer
mode
是一個 C 枚舉,具有以下值0
或 fail
EBUSY
。0
或 fail
tty:get_winsize()
tty
: uv_tty_t userdata
integer, integer
或 fail
state
: string
"supported"
或 "unsupported"
。"supported"
或 "unsupported"
。ENOTSUP
。string
或 fail
uv_udp_t
— UDP 句柄flags
: table
或 nil
family
: string
或 nil
mmsgs
: integer
或 nil
(預設值: 1
)family
必須是 "unix"
、"inet"
、"inet6"
、"ipx"
、"netlink"
、"x25"
、"ax25"
、"atmpvc"
、"appletalk"
或 "packet"
其中之一。mmsgs
將決定透過 recvmmsg(2)
一次能夠接收的訊息數量 (分配的緩衝區大小將能夠容納指定的最大大小資料報數量)。僅在支援 recvmmsg(2)
的平台上生效。flags
也可以是字串或整數。當它是字串時,會像上面的 family
鍵一樣處理。當它是整數時,在呼叫 uv_udp_init_ex
時會直接用作 flags
參數。uv_udp_t userdata
或 fail
udp:get_send_queue_size()
integer
udp:get_send_queue_count()
integer
udp:open(fd)
udp
: uv_udp_t userdata
fd
:integer
0
或 fail
udp:bind(host, port, [flags])
udp
: uv_udp_t userdata
host
: string
port
:number
flags
: table
或 nil
ipv6only
: boolean
reuseaddr
:boolean
flags
都會透過包含 reuseaddr
或 ipv6only
欄位的表格設定為 true
或 false
。0
或 fail
udp:getsockname()
udp
: uv_udp_t userdata
table
或 fail
ip
: string
family
: string
port
: integer
udp:getpeername()
udp
: uv_udp_t userdata
table
或 fail
ip
: string
family
: string
port
: integer
{udp}
, {multicast_addr}
, {interface_addr}
, {membership}
)udp:set_membership(multicast_addr, interface_addr, membership)
udp
: uv_udp_t userdata
multicast_addr
:string
interface_addr
:string
或 nil
membership
:string
multicast_addr
是要設定成員資格的多點傳播位址。 interface_addr
是介面位址。 membership
可以是字串 "leave"
或 "join"
。0
或 fail
{udp}
, {multicast_addr}
, {interface_addr}
, {source_addr}
, {membership}
)udp:set_source_membership(multicast_addr, interface_addr, source_addr, membership)
udp
: uv_udp_t userdata
multicast_addr
:string
interface_addr
:string
或 nil
source_addr
:string
membership
:string
multicast_addr
是要設定成員資格的多點傳播位址。 interface_addr
是介面位址。 source_addr
是來源位址。 membership
可以是字串 "leave"
或 "join"
。0
或 fail
udp:set_multicast_loop(on)
udp
: uv_udp_t userdata
on
:boolean
0
或 fail
udp:set_multicast_ttl(ttl)
udp
: uv_udp_t userdata
ttl
:integer
ttl
是一個介於 1 到 255 的整數。0
或 fail
udp:set_multicast_interface(interface_addr)
udp
: uv_udp_t userdata
interface_addr
:string
0
或 fail
udp:set_broadcast(on)
udp
: uv_udp_t userdata
on
:boolean
0
或 fail
udp:set_ttl(ttl)
udp
: uv_udp_t userdata
ttl
:integer
ttl
是一個介於 1 到 255 的整數。0
或 fail
udp:send(data, host, port, callback)
udp
: uv_udp_t userdata
data
: buffer
host
: string
port
: integer
callback
:callable
err
: nil
或 string
0.0.0.0
(「所有介面」的 IPv4 位址)和一個隨機的端口號碼。uv_udp_send_t userdata
或 fail
udp:try_send(data, host, port)
udp
: uv_udp_t userdata
data
: buffer
host
: string
port
: integer
integer
或 fail
udp:recv_start(callback)
udp
: uv_udp_t userdata
callback
:callable
err
: nil
或 string
data
: string
或 nil
addr
:table
或 nil
ip
:string
port
: integer
family
:string
flags
:table
partial
:boolean
或 nil
mmsg_chunk
:boolean
或 nil
0.0.0.0
(「所有介面」的 IPv4 位址)和一個隨機的端口號碼。0
或 fail
udp:recv_stop()
udp
: uv_udp_t userdata
0
或 fail
udp:connect(host, port)
udp
: uv_udp_t userdata
host
: string
port
: integer
uv.udp_connect()
將會產生 EISCONN
錯誤。嘗試斷開未連線的控制代碼將會傳回 ENOTCONN
錯誤。0
或 fail
uv_fs_event_t
— FS 事件控制代碼uv_fs_event_t userdata
或 fail
fs_event:start(path, flags, callback)
fs_event
:uv_fs_event_t userdata
path
: string
flags
:table
watch_entry
:boolean
或 nil
(預設值:false
)stat
:boolean
或 nil
(預設值:false
)recursive
:boolean
或 nil
(預設值:false
)callback
:callable
err
: nil
或 string
filename
:string
events
:table
change
:boolean
或 nil
rename
:boolean
或 nil
0
或 fail
fs_event:stop()
0
或 fail
fs_event:getpath()
string
或 fail
uv_fs_poll_t
— FS 輪詢控制代碼stat
來偵測檔案何時變更,因此它們可以在 fs 事件控制代碼無法使用的檔案系統上工作。uv_fs_poll_t userdata
或 fail
fs_poll:start(path, interval, callback)
fs_poll
:uv_fs_poll_t userdata
path
: string
interval
:integer
callback
:callable
err
: nil
或 string
prev
:table
或 nil
(請參閱 uv.fs_stat
)curr
:table
或 nil
(請參閱 uv.fs_stat
)interval
毫秒檢查 path
上的檔案是否變更。0
或 fail
fs_poll:stop()
0
或 fail
fs_poll:getpath()
string
或 fail
uv_fs_t userdata
並非同步執行其回呼函式;如果遇到錯誤,傳遞給回呼函式的第一個也是唯一的引數將會是 err
錯誤字串;如果操作成功完成,第一個引數將會是 nil
,而其餘引數將會是 FS 呼叫的結果。readFile
的同步和非同步版本(使用簡單的錯誤處理)作為範例local function readFileSync(path)
local fd = assert(uv.fs_open(path, "r", 438))
local stat = assert(uv.fs_fstat(fd))
local data = assert(uv.fs_read(fd, stat.size, 0))
assert(uv.fs_close(fd))
return data
end
local data = readFileSync("main.lua")
print("synchronous read", data)
local function readFile(path, callback)
uv.fs_open(path, "r", 438, function(err, fd)
assert(not err, err)
uv.fs_fstat(fd, function(err, stat)
assert(not err, err)
uv.fs_read(fd, stat.size, 0, function(err, data)
assert(not err, err)
uv.fs_close(fd, function(err)
assert(not err, err)
return callback(data)
end)
end)
end)
end)
end
readFile("main.lua", function(data)
print("asynchronous read", data)
end)
fd
:integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
close(2)
等效。boolean
或 fail
uv_fs_t userdata
path
: string
flags
: string
或 integer
mode
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
fd
: integer
或 nil
open(2)
。存取 flags
可以是整數,或是下列字串之一: "r"
、"rs"
、"sr"
、"r+"
、"rs+"
、"sr+"
、"w"
、"wx"
、"xw"
、"w+"
、"wx+"
、"xw+"
、"a"
、"ax"
、"xa"
、"a+"
、"ax+"
或 "`xa+`"。integer
或 fail
uv_fs_t userdata
CreateFileW
,因此檔案總是會以二進位模式開啟。因此,不支援 O_BINARY
和 O_TEXT
旗標。fd
:integer
size
: integer
offset
: integer
或 nil
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
data
: string
或 nil
preadv(2)
。回傳任何資料。空字串表示 EOF。offset
為 nil 或省略,則預設為 -1
,表示「使用並更新目前的檔案偏移量」。offset
>= 0 時,讀取操作不會更新目前的檔案偏移量。string
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
unlink(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
data
: buffer
offset
: integer
或 nil
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
bytes
: integer
或 nil
pwritev(2)
。回傳寫入的位元組數。offset
為 nil 或省略,則預設為 -1
,表示「使用並更新目前的檔案偏移量」。offset
>= 0 時,寫入操作不會更新目前的檔案偏移量。integer
或 fail
uv_fs_t userdata
path
: string
mode
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
mkdir(2)
。boolean
或 fail
uv_fs_t userdata
template
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
path
: string
或 nil
mkdtemp(3)
。string
或 fail
uv_fs_t userdata
template
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
fd
: integer
或 nil
path
: string
或 nil
mkstemp(3)
。回傳一個暫存檔案控制代碼和檔名。integer, string
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
rmdir(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
callback
:callable
err
: nil
或 string
success
: uv_fs_t userdata
或 nil
scandir(3)
,但 API 略有不同。回傳一個控制代碼,使用者可以將其傳遞給 uv.fs_scandir_next()。uv_fs_t userdata
或 fail
fs
: uv_fs_t userdata
string, string
或 nil
或 fail
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
stat
: table
或 nil
(請參閱下方)stat(2)
。table
或 fail
dev
: integer
mode
: integer
nlink
: integer
uid
: integer
gid
: integer
rdev
: integer
ino
: integer
size
: integer
blksize
: integer
blocks
: integer
flags
: integer
gen
: integer
atime
: table
sec
: integer
nsec
: integer
mtime
: table
sec
: integer
nsec
: integer
ctime
: table
sec
: integer
nsec
: integer
birthtime
: table
sec
: integer
nsec
: integer
type
: string
uv_fs_t userdata
fd
:integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
stat
: table
或 nil
(請參閱 uv.fs_stat
)fstat(2)
。table
或 fail
(請參閱 uv.fs_stat
)uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
stat
: table
或 nil
(請參閱 uv.fs_stat
)lstat(2)
。uv_fs_t userdata
path
: string
new_path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
rename(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
fsync(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
fdatasync(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
offset
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
ftruncate(2)
。boolean
或 fail
uv_fs_t userdata
out_fd
: integer
in_fd
: integer
in_offset
: integer
size
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
bytes
: integer
或 nil
sendfile(2)
的限制版本。回傳寫入的位元組數。integer
或 fail
uv_fs_t userdata
path
: string
mode
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
permission
: boolean
或 nil
access(2)
。Windows 使用 GetFileAttributesW()
。存取 mode
可以是整數,或是一個包含 "R"
或 "W"
或 "X"
的字串。回傳 true
或 false
,表示存取權限。boolean
或 fail
uv_fs_t userdata
path
: string
mode
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
chmod(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
mode
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
fchmod(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
atime
: number
mtime
: number
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
utime(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
atime
: number
mtime
: number
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
futime(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
atime
: number
mtime
: number
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
lutime(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
new_path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
link(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
new_path
: string
flags
: table
、integer
或 nil
dir
: boolean
junction
: boolean
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
symlink(2)
。如果省略 flags
參數,則第三個參數會被視為 callback
。boolean
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
path
: string
或 nil
readlink(2)
。string
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
path
: string
或 nil
realpath(3)
。string
或 fail
uv_fs_t userdata
path
: string
uid
: integer
gid
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
chown(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
uid
: integer
gid
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
fchown(2)
。boolean
或 fail
uv_fs_t userdata
fd
:integer
uid
: integer
gid
: integer
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
lchown(2)
。boolean
或 fail
uv_fs_t userdata
path
: string
new_path
: string
flags
: table
、integer
或 nil
excl
: boolean
ficlone
: boolean
ficlone_force
: boolean
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
flags
參數,則第三個參數會被視為 callback
。boolean
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
dir
: luv_dir_t userdata
或 nil
entries
: integer
或 nil
luv_dir_t userdata
或 fail
uv_fs_t userdata
dir:readdir([callback])
dir
: luv_dir_t userdata
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
entries
: table
或 nil
(請參閱下方)luv_dir_t
。回傳一個資料表,其中包含資料表的數量,其中條目數 n
等於或小於在相關聯的 uv.fs_opendir() 呼叫中使用的 entries
參數。table
或 fail
[1, 2, 3, ..., n]
: table
name
: string
type
: string
uv_fs_t userdata
dir:closedir([callback])
dir
: luv_dir_t userdata
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
success
:boolean
或 nil
boolean
或 fail
uv_fs_t userdata
path
: string
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
table
或 nil
(請參閱下方)statfs(2)
。table
或 nil
type
: integer
bsize
: integer
blocks
: integer
bfree
: integer
bavail
:整數
files
:整數
ffree
:整數
getaddrinfo
和 getnameinfo
請求。local function work_callback(a, b)
return a + b
end
local function after_work_callback(c)
print("The result is: " .. c)
end
local work = uv.new_work(work_callback, after_work_callback)
work:queue(1, 2)
-- output: "The result is: 3"
work_callback
:函式
或 字串
...
:傳遞給/從 uv.queue_work(work_ctx, ...)
的 threadargs
after_work_callback
:函式
...
:從 work_callback
返回的 threadargs
luv_work_ctx_t
(而非 uv_work_t
)。work_callback
是一個 Lua 函式,或是一個包含 Lua 程式碼或從函式傾印的位元組碼的字串。返回包裝它的 Lua userdata。luv_work_ctx_t userdata
work_ctx:queue(...)
work_ctx
:luv_work_ctx_t userdata
...
:threadargs
work_callback
,並帶有 ...
中的任何其他引數。從 work_callback
返回的值將傳遞給 after_work_callback
,該函式將在主迴圈執行緒中呼叫。boolean
或 fail
host
:字串
或 nil
service
:字串
或 nil
hints
:表格
或 nil
family
:字串
或 整數
或 nil
socktype
:字串
或 整數
或 nil
protocol
:字串
或 整數
或 nil
addrconfig
:布林值
或 nil
v4mapped
:布林值
或 nil
all
:布林值
或 nil
numerichost
:布林值
或 nil
passive
:布林值
或 nil
numericserv
:布林值
或 nil
canonname
:布林值
或 nil
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
addresses
:表格
或 nil
(請參閱下方)getaddrinfo(3)
。node
或 service
其中之一可以是 nil
,但不能同時為 nil
。family
:"unix"
、"inet"
、"inet6"
、"ipx"
、"netlink"
、"x25"
、"ax25"
、"atmpvc"
、"appletalk"
或 "packet"
socktype
:"stream"
、"dgram"
、"raw"
、"rdm"
或 "seqpacket"
protocol
:將使用 getprotobyname(3)
函式查詢(範例:"ip"
、"icmp"
、"tcp"
、"udp"
等)table
或 fail
[1, 2, 3, ..., n]
: table
addr
:字串
family
: string
port
:整數
或 nil
socktype
:字串
protocol
:字串
canonname
:字串
或 nil
uv_getaddrinfo_t userdata
或 fail
address
:表格
ip
:字串
或 nil
port
:整數
或 nil
family
:字串
或 整數
或 nil
callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
host
:字串
或 nil
service
:字串
或 nil
getnameinfo(3)
。family
必須是 "unix"
、"inet"
、"inet6"
、"ipx"
、"netlink"
、"x25"
、"ax25"
、"atmpvc"
、"appletalk"
或 "packet"
其中之一。字串, 字串
或 fail
uv_getnameinfo_t userdata
或 fail
options
:表格
或 nil
stack_size
:整數
或 nil
entry
:函式
或 字串
...
:傳遞給 entry
的 threadargs
luv_thread_t
(而非 uv_thread_t
)。返回包裝它的 Lua userdata 並非同步執行 entry
,它可以是一個 Lua 函式,或是一個包含 Lua 程式碼或從函式傾印的位元組碼的字串。其他引數 ...
會傳遞給 entry
函式,並且可以提供一個可選的 options
表格。目前接受的 option
欄位為 stack_size
。luv_thread_t userdata
或 fail
thread:equal(other_thread)
thread
:luv_thread_t userdata
other_thread
:luv_thread_t userdata
__eq
元方法。thread:setaffinity(affinity, [get_old_affinity])
thread
:luv_thread_t userdata
affinity
:表格
[1, 2, 3, ..., n]
:布林值
get_old_affinity
:布林值
affinity
必須是一個表格,其中每個鍵都是 CPU 編號,而值是布林值,表示 thread
是否有資格在該 CPU 上執行。如果 affinity
表格的長度不等於或大於 uv.cpumask_size(),則從表格中遺失的任何 CPU 編號的親和性將設定為 false
。如果需要設定超過 uv.cpumask_size() 個 CPU 的親和性,則 affinity
必須是一個沒有間隙的類陣列表格,因為如果 #affinity
大於 uv.cpumask_size(),則 #affinity
將用作 cpumask_size
。get_old_affinity
為 true
,則會返回 thread
的先前親和性設定。否則,成功呼叫後會返回 true
。表格
或 布林值
或 fail
[1, 2, 3, ..., n]
:布林值
thread:getaffinity([mask_size])
thread
:luv_thread_t userdata
mask_size
:整數
mask_size
,則它必須大於或等於 uv.cpumask_size()
。如果省略 mask_size
參數,則會使用 uv.cpumask_size()
的傳回值。返回一個類陣列表格,其中每個鍵對應一個 CPU 編號,而值是布林值,表示 thread
是否有資格在該 CPU 上執行。table
或 fail
[1, 2, 3, ..., n]
:布林值
uv.thread_getaffinity
和 uv.thread_setaffinity
中使用的表格鍵對應。integer
或 fail
thread:setpriority(priority)
thread
:luv_thread_t userdata
priority
:數字
uv.constants.THREAD_PRIORITY_HIGHEST
uv.constants.THREAD_PRIORITY_ABOVE_NORMAL
uv.constants.THREAD_PRIORITY_NORMAL
uv.constants.THREAD_PRIORITY_BELOW_NORMAL
uv.constants.THREAD_PRIORITY_LOWEST
boolean
或 fail
thread:getpriority()
thread
:luv_thread_t userdata
數字
或 fail
luv_thread_t
thread:join()
thread
:luv_thread_t userdata
thread
完成執行其進入函式。boolean
或 fail
msec
:整數
string
或 fail
string
或 fail
cwd
:字串
cwd
設定目前的工作目錄。0
或 fail
string
或 fail
title
:字串
title
設定目前程序的標題。0
或 fail
數字
數字
數字
uv.get_free_memory()
的不同之處在於,它會考慮作業系統施加的任何限制。如果沒有此類限制,或限制未知,則返回的量將與 uv.get_free_memory()
相同。數字
integer
或 fail
table
或 fail
utime
:表格
(使用的使用者 CPU 時間)sec
: integer
usec
:整數
stime
: table
(系統 CPU 時間使用量)sec
: integer
usec
:整數
maxrss
: integer
(最大常駐記憶體集合大小)ixrss
: integer
(整體共享記憶體大小)idrss
: integer
(整體非共享資料大小)isrss
: integer
(整體非共享堆疊大小)minflt
: integer
(頁面回收 (軟性頁面錯誤))majflt
: integer
(頁面錯誤 (硬性頁面錯誤))nswap
: integer
(交換)inblock
: integer
(區塊輸入操作)oublock
: integer
(區塊輸出操作)msgsnd
: integer
(已傳送的 IPC 訊息)msgrcv
: integer
(已接收的 IPC 訊息)nsignals
: integer
(已接收的訊號)nvcsw
: integer
(自願性上下文切換)nivcsw
: integer
(非自願性上下文切換)integer
table
或 fail
[1, 2, 3, ..., n]
: table
model
: string
speed
: number
times
: table
user
: number
nice
: number
sys
: number
idle
: number
irq
: number
ENOTSUP
。integer
或 fail
integer
integer
id
: integer
id
設定進程的使用者 ID。id
: integer
id
設定進程的群組 ID。數字
clock_id
: string
clock_id
可以是字串 "monotonic"
或 "realtime"
。table
或 fail
sec
: integer
nsec
: integer
數字
或 fail
[旗標] 控制代碼類型 控制代碼位址
。旗標為 R
表示已參考,A
表示作用中,I
表示內部。fd
:integer
fd
一起使用。通常這會在初始化期間用於猜測 stdio 串流的類型。string
gettimeofday(2)
的跨平台實作。以配對形式返回 unix 時間的秒數和微秒數。integer, integer
或 fail
ip
、family
、netmask
、internal
和 mac
。table
[名稱(s)]
: table
ip
: string
family
: string
netmask
: string
internal
: boolean
mac
: string
ifindex
: integer
if_indextoname(3)
的支援 IPv6 實作。string
或 fail
ifindex
: integer
ifindex
。在所有其他平台上,會使用 uv.if_indextoname()。string
或 fail
number, number, number
table
sysname
: string
release
: string
version
: string
machine
: string
string
name
: string
size
: integer
(預設 = LUAL_BUFFERSIZE
)name
指定的環境變數。可以透過定義 size
來設定內部緩衝區大小。如果省略,則會使用 LUAL_BUFFERSIZE
。如果環境變數超過內部緩衝區中可用的儲存空間,則會返回 ENOBUFS
。如果沒有相符的環境變數存在,則會返回 ENOENT
。string
或 fail
name
: string
value
: string
value
設定由 name
指定的環境變數。boolean
或 fail
name
: string
name
指定的環境變數。boolean
或 fail
table
string
或 fail
string
或 fail
table
username
: string
uid
: integer
gid
: integer
shell
: string
homedir
: string
數字
數字
pid
: integer
pid
指定的進程的排程優先順序。數字
或 fail
pid
: integer
priority
: integer
pid
指定的進程的排程優先順序。priority
範圍介於 -20 (高優先順序) 和 19 (低優先順序) 之間。boolean
或 fail
len
: integer
flags
: nil
(請參閱下方)callback
:callable
(非同步版本)或 nil
(同步版本)err
: nil
或 string
bytes
: string
或 nil
len
的字串。flags
保留供未來擴充使用,目前必須為 nil
或 0
或 {}
。len
個隨機位元組可用時,會返回非零錯誤值或傳遞至回呼。如果省略回呼,則此函數會同步完成。string
或 fail
0
或 fail
errcode
: integer
err
和 name
):Unix 上的 POSIX 錯誤碼 (儲存在 errno 中的錯誤碼) 和 Windows 上的 Win32 錯誤碼 (由 GetLastError() 或 WSAGetLastError() 返回的錯誤碼)。string, string
或 nil
epoll_wait
)中閒置的時間量。此呼叫是執行緒安全的。loop_configure
並帶有 "metrics_idle_time"
參數之前,不會開始累積事件提供者的閒置時間。數字
prepare
回呼函數中擷取這些指標(請參閱 uv.new_prepare(), uv.prepare_start()),以確保指標計數器沒有不一致的問題。table
loop_count
: integer
events
: integer
events_waiting
: integer