gpt4 book ai didi

在初始化期间正确关闭 Libuv 循环

转载 作者:行者123 更新时间:2023-11-30 16:11:48 35 4
gpt4 key购买 nike

我正在 libuv 中初始化一个循环,但是如果我需要在初始化循环之后但在调用 uv_run 之前返回,如何正确清理所有内存和文件描述符?这是我的示例代码,loopuv_loop_t*serveruv_tcp_t*:

if (uv_loop_init(loop) < 0) {
return -1;
}
if (uv_tcp_init(loop, server) < 0) {
// What code here?
return -1;
}
if (some_other_function() < 0) {
// What code here?
return -1;
}
uv_run(loop, UV_RUN_DEFAULT);

根据this question ,我应该停下来,行走并运行循环,关闭所有 handle ;但这假设我已经在运行循环,但我没有。我可以只调用 uv_loop_close(loop),但这不会释放句柄。

最佳答案

正如链接中提到的,您需要执行类似的操作;

uv_loop_init(&loop);
uv_tcp_init(&loop, &server);

uv_walk(&loop,
[](uv_handle_t* handle, void* arg) {
printf("closing...%p\n", handle);
uv_close(handle, [](uv_handle_t* handle) {
printf("closed...%p\n", handle);
}
);
uv_run(&loop, UV_RUN_ONCE);
},
NULL);

关于在初始化期间正确关闭 Libuv 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58498092/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com