科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件推荐:Linux用户态与内核态的交互 (6)

推荐:Linux用户态与内核态的交互 (6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

同样地,函数close用于关闭打开的netlink socket。程序中,因为程序一直循环接收处理内核的消息,需要收到用户的关闭信号才会退出,所以关闭套接字的工作放在了自定义的信号函数sig_int中处理:

作者:Kendo 来源:赛迪网技术社区 2007年11月2日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
 

同样地,函数close用于关闭打开的netlink socket。程序中,因为程序一直循环接收处理内核的消息,需要收到用户的关闭信号才会退出,所以关闭套接字的工作放在了自定义的信号函数sig_int中处理:









/*这个信号函数,处理一些程序退出时的动作*/

static void sig_int(int signo)

{

  struct sockaddr_nl kpeer;

  struct msg_to_kernel message;



  memset(&kpeer, 0, sizeof(kpeer));

  kpeer.nl_family = AF_NETLINK;

  kpeer.nl_pid    = 0;

  kpeer.nl_groups = 0;



  memset(&message, 0, sizeof(message));

  message.hdr.nlmsg_len = NLMSG_LENGTH(0);

  message.hdr.nlmsg_flags = 0;

  message.hdr.nlmsg_type = IMP2_CLOSE;

  message.hdr.nlmsg_pid = getpid();



/*向内核发送一个消息,由nlmsg_type表明,应用程序将关闭*/

sendto(skfd, &message, message.hdr.nlmsg_len, 0,
(struct sockaddr *)(&kpeer),         sizeof(kpeer));



  close(skfd);

  exit(0);

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章