当前位置:  技术问答>linux和unix

用netlink从内核空间向用户空间传送数据为何失败!

    来源: 互联网  发布时间:2016-05-17

    本文导语:  大家好!  现在正在做一个通过无线网络进行文件传输方面的项目,建立一个内核线程以让内核态接收函数在后台一直运行,而且用户态也一直用recvmsg进行监听,待到数据到来之时用netlink通知用户空间的程序把接收...

大家好! 
现在正在做一个通过无线网络进行文件传输方面的项目,建立一个内核线程以让内核态接收函数在后台一直运行,而且用户态也一直用recvmsg进行监听,待到数据到来之时用netlink通知用户空间的程序把接收到的数据写入文件。可是在接收时一直接收不到数据?这是怎么回事呢?原来用在用户态建立守护进程以让内核态的接收函数在后台一直运行时,可以接收到正常的数据。难道是因为是由于建立内核线程的原因么?

下面是数据到来时用于向用户空间通知的函数实现:
                  struct sk_buff *skb = NULL;
struct nlmsghdr *nlh = NULL;
skb = alloc_skb(NLMSG_SPACE(MAX_PAYLOAD),GFP_KERNEL);
nlh = (struct nlmsghdr *)skb->data;
nlh->nlmsg_len = NLMSG_SPACE(MAX_PAYLOAD);
nlh->nlmsg_pid = 0;  /* from kernel */
nlh->nlmsg_flags = 0;
nlh = (struct nlmsghdr *) skb_put(skb, NLMSG_SPACE(MAX_PAYLOAD));
NETLINK_CB(skb).pid = 0;  /* from kernel */
/* to mcast group 1nlmsg_len = NLMSG_LENGTH(MAX_PAYLOAD);
试试
 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • netlink 的问题
  • netlink的问题,很奇怪,请教高手。
  • (请来拿分)关于netlink 中的 kfree_skb的问题!
  • 关于netlink的问题
  • linux-2.6.24下netlink使用问题
  • netlink,中用户使用sendto有什么意义


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3