📄 auto_udisk.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 + -