• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: U盘  读取文件  

资源简介

linux下插入U盘,自动读取文件【示例】 方便实用

资源截图

代码片段和文件信息

#include 
#include 
#include 

#include 
#include nk.h>

#include 

#include 

#define UEVENT_BUFFER_MAX       (1024*15)   //15K

// the name of UDisk is ‘UTEST01‘ the name of file is ‘123‘


int main(int argcchar *argv[])
{
        int i = 0;
int aiResult= 0;
int aiHotplug_sock= 0;
const int buffersize = 1024 ;      //1K 
        struct sockaddr_nl astNLaddr;
        char apcRecBuf[UEVENT_BUFFER_MAX]; 
        int fd = 0;
        DIR* dir = NULL;
        struct dirent *s_dir;

        bzero(&apcRecBuf UEVENT_BUFFER_MAX);
//connect to NETlink_Kobject_UEVENT
        memset(&astNLaddr 0x00 sizeof(struct sockaddr_nl));
        astNLaddr.nl_family = AF_NETlink;
        astNLaddr.nl_pid = getpid();
        astNLaddr.nl_groups = 1;
        aiHotplug_sock = socket(PF_NETlink SOCK_DGRAM NETlink_Kobject_UEVENT);
        setsockopt(aiHotplug_sock SOL_SOCKET SO_RCVBUFFORCE &buffersize sizeof(buffersize));
        aiResult = bind(aiHotplug_sock (struct sockaddr *) &astNLaddr sizeof(struct sockaddr_nl));

#if 0
        while(1)
        {
                bzero(&apcRecBuf UEVENT_BUFFER_MAX);
                recv(aiHotplug_sock &apcRecBuf sizeof(apcRecBuf) 0);

                printf(“%s\n“ apcRecBuf);

                if(!memcmp(apcRecBuf“add@“4) && !memcmp(&apcRecBuf[strlen(apcRecBuf) - 4]“/sdb“4))
                {
                        printf(“Found U Disk\n“);
                        break;
                }
        }

        sleep(1);
        dir = opendir(“/media/UTEST01/“);
        if(NULL != dir)printf(“Dir is OPEN !!!\n“dir);



        while((s_dir=readdir(dir))!=NULL)     
        {     
   
                if((strcmp(s_dir->d_name“.“)==0)||(strcmp(s_dir->d_name“..“)==0))\
                        continue;  
   
                printf(“%s\n“s_dir->d_name);     
 
        }  


#endif

        fd = open(“/media/UTEST01/123“ O_RDWR | O_NOCTTY);
        printf(“%d\n“fd);
        bzero(&apcRecBuf UEVENT_BUFFER_MAX);
        aiResult = read(fdapcRecBufUEVENT_BUFFER_MAX);
        printf(“%d\n“aiResult);

        for(i = 0; i < aiResult ; i++)
        {
                printf(“%d “apcRecBuf[i]);
                if(i%20 == 19)printf(“\n“);
        }
        printf(“\n“);
        return 1;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         277  2010-04-01 15:19  Makefile
     文件        2416  2010-05-02 10:17  test.c

评论

共有 条评论