您的位置:首页 > 运维架构 > Linux

Linux 热插拔(Hot Plug)处理机制系列

2017-12-14 19:25 405 查看

见:

http://blog.csdn.net/qq123386926/article/details/50695769

```C

#include <stdio.h> 

#include <stdlib.h> 

#include <string.h> 

#include <fcntl.h> 

#include <sys/socket.h> 

#include <linux/netlink.h> 

#define UEVENT_BUFFER_SIZE 2048 

 

int main(void) 



    struct sockaddr_nl client; 

    struct timeval tv; 

    int CppLive, rcvlen, ret; 

    fd_set fds; 

    int buffersize = 1024; 

    CppLive = socket(AF_NETLINK, SOCK_RAW, NETLINK_KOBJECT_UEVENT); 

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

    client.nl_family = AF_NETLINK; 

    client.nl_pid = getpid(); 

    client.nl_groups = 1; /* receive broadcast message*/ 

    setsockopt(CppLive, SOL_SOCKET, SO_RCVBUF, &buffersize, sizeof(buffersize)); 

    bind(CppLive, (struct sockaddr*)&client, sizeof(client)); 

    while (1) { 

        char buf[UEVENT_BUFFER_SIZE] = { 0 }; 

        FD_ZERO(&fds); 

        FD_SET(CppLive, &fds); 

        tv.tv_sec = 0; 

        tv.tv_usec = 100 * 1000; 

        ret = select(CppLive + 1, &fds, NULL, NULL, &tv); 

        if(ret < 0) 

            continue; 

        if(!(ret > 0 && FD_ISSET(CppLive, &fds))) 

            continue; 

        /* receive data */ 

        rcvlen = recv(CppLive, &buf, sizeof(buf), 0); 

        if (rcvlen > 0) { 

            printf("%s\n", buf); 

            /*You can do something here to make the program more perfect!!!*/ 

        } 

    } 

    close(CppLive); 

    return 0; 



示例输出:

view plaincopy to clipboardprint?
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1 
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 
add@/module/usb_storage 
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6 
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/scsi_host/host6 

add@/bus/usb/drivers/usb-storage 
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0 
add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_disk/6:0:0:0 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_device/6:0:0:0 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_generic/sg2 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/bsg/6:0:0:0 

change@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/block/sdb 

add@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb4 

add@/devices/virtual/bdi/8:16 
add@/module/fat 
add@/kernel/slab/fat_cache 
add@/kernel/slab/fat_inode_cache 
add@/module/vfat 
add@/module/nls_cp437 
add@/module/nls_iso8859_1 
remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/bsg/6:0:0:0 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_generic/sg2 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_device/6:0:0:0 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/scsi_disk/6:0:0:0 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb4 

remove@/devices/virtual/bdi/8:16 
remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0/block/sdb 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/target6:0:0/6:0:0:0 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6/scsi_host/host6 

remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host6 
remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0 
remove@/devices/pci0000:00/0000:00:1d.7/usb2/2-1 
remove@/host6/target6:0:0 

```


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: