技术专栏
【海思应用篇】-(1)netlink
【海思应用篇】-(1)netlink
netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。
这篇文章主要讲它的应用,用来检测磁盘的插入和拔出,以便于管理磁盘挂载和卸载,对于录像管理也非常重要。
直接上代码。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/vfs.h>
#include <sys/mount.h>
#include <errno.h>
#include <dirent.h>
#include <sys/prctl.h>
#include <linux/netlink.h>
int main(void)
{
int sock;
struct sockaddr_nl addr;
int rc;
sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);//NETLINK_ROUTE
if ( sock < 0 )
{
printf("err while create netlink socket\n");
return -1;
}
//setsockopt(sock, SOL_SOCKET, SO_RCVBUFFORCE, &sz, sizeof(sz));
memset(&addr, 0, sizeof(addr));
addr.nl_family = AF_NETLINK;
addr.nl_pid = getpid();
addr.nl_groups = 0xffffffff;
rc = bind(sock, (struct sockaddr *)&addr, sizeof(addr));
if ( rc < 0 )
{
printf("err while bind netlink socket\n");
close(sock);
return -1;
}
//return sock;
#if 1
char bufptr[4096];
while ( 1 )
{
memset(bufptr, 0, sizeof(bufptr));
rc = recv(sock, bufptr, sizeof(bufptr)-1, 0);
if ( rc <= 0 )
{
usleep(1000);
continue;
}
bufptr[rc] = '\0';
//printf("netlink read(%d)=%s\n", rc, bufptr);
if ( strstr(bufptr, "block") != NULL )
{
printf("netlink read(%d)=%s\n", rc, bufptr);
//可以用来处理磁盘的挂载和卸载操作
}
}
close(sock);
#endif
return -1;
}
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
1
收藏
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据相关专栏
-
浏览量:4292次2020-08-30 10:14:12
-
浏览量:5822次2020-08-30 08:25:06
-
浏览量:5783次2020-08-30 09:01:15
-
浏览量:4234次2020-08-29 16:50:56
-
浏览量:3235次2020-08-30 11:31:00
-
浏览量:2855次2020-08-30 11:33:11
-
浏览量:3145次2020-08-30 09:43:41
-
浏览量:3653次2020-09-04 14:07:48
-
浏览量:6235次2020-08-29 21:41:37
-
浏览量:4639次2020-08-31 08:41:19
-
浏览量:3723次2020-08-30 11:44:43
-
浏览量:4168次2020-08-30 10:04:00
-
浏览量:4486次2020-08-30 09:57:38
-
浏览量:3738次2020-08-29 21:36:16
-
浏览量:2748次2020-08-30 15:42:23
-
浏览量:3031次2020-08-30 12:39:35
-
浏览量:11049次2020-08-30 15:32:16
-
浏览量:4506次2020-08-30 15:59:35
-
浏览量:4097次2020-08-30 15:44:39
切换马甲
上一页
下一页
打赏用户
共 1 位
我要创作
分享技术经验,可获取创作收益
分类专栏
-
22篇
热门专栏
- PC创新利器Lakefield处理器登场!除了它我们还有这些大招
- hi3516A 视频接口 vicap & MIPI Rx学习笔记
- 海思 AI 芯片 (Hi3559A V100) 算法开发(三) 在 PC 仿真库使用 YOLOv3 进行图片目标检测以及 NMS、YOLO 讲解
- 遥遥领先,解决海思星闪芯片BS25 1.0.T20.12版本开发工具默认SDK无法编译的问题
- 华为达芬奇架构NPU为什么聪明?
- 中国移动联合上海海思发布,首款深度定制WiFi6智慧家庭路由器方案
- 上海海思携手四川电信发布8K+VR/AR智慧媒体终端,开启视听新盛宴
- 海思Hi3519AV100sensor移植之一-- imx307
- Hi3516DV300在EMMC上的根文件系统创建方法
- Hi3531D SDK安装及升级步骤分享
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
xclshwd
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注

微信扫码分享
QQ好友