C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了libuv:如何正常退出应用程序的错误?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用libuv库的应用程序.它运行认循环:
uv_run(uv_default_loop());

出现故障时应如何正常退出?目前我在做如下面的例子:

uv_tcp_t* tcp = malloc(sizeof(uv_tcp_t));
int r = uv_tcp_init(uv_default_loop(),tcp);

if (r) {
  free(tcp);
  uv_loop_delete(default_loop);
  exit(EXIT_FAILURE);
}

应该调用uv_loop_delete函数吗?它有什么作用?它会丢弃所有挂起的回调函数吗?它关闭所有当前打开的TCP连接?退出前必须手动执行吗?

P.S .:不能添加标签’libuv'(小于1500的声誉).有人可以创建添加吗?

解决方法

uv_loop_delete的声明为 here,源代码here.它如下所示:
void uv_loop_delete(uv_loop_t* loop) {
  uv_ares_destroy(loop,loop->chAnnel);
  ev_loop_destroy(loop->ev);
#if __linux__
  if (loop->inotify_fd == -1) return;
  ev_io_stop(loop->ev,&loop->inotify_read_watcher);
  close(loop->inotify_fd);
  loop->inotify_fd = -1;
#endif
#if HAVE_PORTS_FS
  if (loop->fs_fd != -1)
    close(loop->fs_fd);
#endif
}

它将有效地清除每个文件描述符可以清理.它将关闭TCP连接,Inotify连接,用于读取事件的Socket,管道fds等.

=>是的,此功能关闭您通过libuv打开的所有内容.

注意:无论如何,当您的应用程序退出时,您的操作系统将清理并关闭您打开的所有内容,没有任何怜悯.

大佬总结

以上是大佬教程为你收集整理的libuv:如何正常退出应用程序的错误?全部内容,希望文章能够帮你解决libuv:如何正常退出应用程序的错误?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。