⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auto_udisk.c

📁 平台:ARM9的嵌入式LINUX 自动检测U盘
💻 C
字号:
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>

int main(void)
{
	  DIR *dir,*udisk_dir;
    struct dirent *next,*udisk_next;
    int dir_number=0,disk_num=0;
    int udisk_flag=0;

    while(1)
    	{
    		//打开目录
   			dir = opendir("/proc/bus/usb/001");
    		if (!dir)
    			{
        		fprintf(stderr, "Cannot open /dev/scsi\n");
						exit(1);
    			}
    		//读取目录内文件名
   		 	while((next = readdir(dir)) != NULL)
    			{
    				dir_number++;
    			}
    		closedir(dir);
    		switch(udisk_flag)
    			{
    				case 0:
    					{	
    						//如果文件名大于2(除了 "." "..")说明U盘已经存在
   							if(dir_number>3)
    							{
    								udisk_dir = opendir("/dev/scsi/host0/bus0/target0/lun0");
    								if (!udisk_dir)
    										{
        									fprintf(stderr, "Cannot open /dev/scsi\n");
													exit(1);
    										}
   		 							while((udisk_next = readdir(udisk_dir)) != NULL)
    										{
    											disk_num++;
    										}
    									
    									dir_number=0;
    									udisk_flag=1;
    									//如果文件个数大于4,说明U盘是由N块flash组成,需要挂载disc
    									if(disk_num>4)
    	  										system("mknod /dev/udisk b 8 0");
    	  							else
    	  										system("mknod /dev/udisk b 8 1");
    	  							system("mount -t vfat /dev/udisk /mnt/usb");
    	  							printf("The udisk has installed\r\n");
    							}
    						break;
    					}
    				case 1:
							{
    						if(dir_number==3)
    							{
    								dir_number=0;
    								udisk_flag=0;
    	  						system("umount /mnt/usb");
    	  						system("rm -rf /dev/udisk");
    	  						system("/test/udisk stop");
    	  						system("/test/udisk start");
    	  						printf("The udisk has uninstalled\r\n");
    							}
    						break;
    					} 
    				default:
    						break;
    			}
    		//软计数器清零
    		dir_number=0; 
    		disk_num=0;
    		sleep(1); 
    	}
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -