gpt4 book ai didi

c - libnl 中 nl_socket_set_cb() 的目的

转载 作者:太空狗 更新时间:2023-10-29 12:31:44 24 4
gpt4 key购买 nike

最近,我正在研究iw 的源代码,试图了解libnl 是如何工作的。

由于我无法理解的原因,我在 iw.c 的某个点遇到了 nl_socket_set_cb() 的使用。网络上也没有文档。

我的第一个怀疑是当有数据要从 nl 套接字读取时关联一个回调函数,但这是在源代码的其他部分通过调用 nl_recvmsgs() 时关联一个回调来完成的>.

任何人都可以阐明一下吗? nl_socket_set_cb() 是多余的吗?

最佳答案

如果您使用 nl_recvmsgs(sk, cb) , 你仍然需要使用 nl_socket_set_cb(sk, cb)如果您计划使用 NL_CB_MSG_OUT打回来。在通过套接字发送任何内容之前,在 nl_sendmsg() 中调用该回调。

但是,如果您改为使用 nl_recvmsgs_default(sk) , 那么 nl_socket_set_cb() 就很方便了,因为它将回调存储在 sk->s_cb 结构中,传递给发送和接收函数。

我认为 nl_socket_set_sb() 的真正用途是对同一个套接字重新使用 nl_recvmsgs_default(),因为它似乎删除了任何先前设置的回调存储在 sk 结构中。

https://github.com/thom311/libnl/blob/master/lib/nl.c

https://github.com/thom311/libnl/blob/master/lib/socket.c

https://github.com/thom311/libnl/blob/master/include/netlink-private/types.h

https://github.com/thom311/libnl/blob/master/lib/handlers.c

关于c - libnl 中 nl_socket_set_cb() 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816230/

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