#鸿蒙通关秘籍#如何实现一个自定义的具备fdsan功能的函数接口?

HarmonyOS
2024-12-17 10:20:16
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
雪域狼UEFI

实现一个自定义结构体来管理文件描述符,并在文件打开时使用fdsan_exchange_owner_tag绑定tag。在关闭文件时,使用fdsan_close_with_tag检查tag的正确性,示例如下: cpp struct fdsan_fd { explicit fdsan_fd(int fd) { reset(fd); } ~fdsan_fd() { reset(); } int get() { return fd_; } void reset(int new_fd = -1) { if (fd_ != -1) close(fd_, tag()); if (new_fd != -1) { fd_ = new_fd; exchange_tag(fd_, 0, tag()); } } private: int fd_ = -1; uint64_t tag() { return reinterpret_cast<uint64_t>(this); } static void exchange_tag(int fd, uint64_t old_tag, uint64_t new_tag) { if (&fdsan_exchange_owner_tag) fdsan_exchange_owner_tag(fd, old_tag, new_tag); } static int close(int fd, uint64_t tag) { if (&fdsan_close_with_tag) return fdsan_close_with_tag(fd, tag); return -1; } };

通过这种方式,自定义接口可以有效地防止其它线程对fd的误操作。

分享
微博
QQ
微信
回复
2024-12-17 13:08:50
相关问题
使用自定义函数创建一个UI组
599浏览 • 1回复 待解决
如何实现一个自定义样式toast提示
2277浏览 • 1回复 待解决
如何实现一个自定义询问框
784浏览 • 1回复 待解决
如何自定义函数中创建一个UI组件
2122浏览 • 1回复 待解决
HarmonyOS 实现一个自定义分类列表
715浏览 • 1回复 待解决
如何在全局实现一个自定义dialog弹窗
3195浏览 • 1回复 待解决
实现一个自定义动画,出现丢帧问题
657浏览 • 1回复 待解决
怎样实现一个自定义播放器?
715浏览 • 1回复 待解决