📄 zuoqian.c
字号:
#include <string.h>
#include <stdio.h>
#include <sys/mount.h>
//char sysFileName;
char g_hdPath[10][30];//zhb for hdd missed 20061205
int part_in_use[10] = {0};
#define MAX_READ_BUFFER_SIZE 1024
#define MAX_PARTITION_NAME_LENGTH 5
char sdimformations[10][6];
char sdimformations_check[10][6];
int main(void)
{
int s;
FILE *pf;
char stream[MAX_READ_BUFFER_SIZE+1];
char partition[MAX_PARTITION_NAME_LENGTH];
int major, minor, size;
int i=0,j=0,k=0,e=0,m=0,n=0,g=0;
int sss=1;
char flag[5]={0};
char flag_i[5]={0};
while(1)
{
if (!(pf = fopen("/proc/partitions", "r")))
{
perror("open /proc/partitions");
return 0 ;
}
printf("@@@@@@@@@@@@@@@@@@@@\n");
for(n=0;n<10;n++)
{
strcpy(sdimformations_check[n], sdimformations[n]);
printf("sdimformations_check[%d]:%s\n",n,sdimformations_check);
printf("sdimformations[%d]:%s\n",n,sdimformations);
}
printf("@@@@@@@@@@@@@@@@@@@@\n");
g=0;
printf("##############g:%d\n",g);
memset(sdimformations,0,sizeof(sdimformations));
while (fgets(stream, MAX_READ_BUFFER_SIZE, pf))
{
memset(partition,0,sizeof(partition));
sscanf(stream, "\t%d\t%d\t%d\t%s", &major, &minor,& size, partition);
// printf("before if \n");
// printf("partition==[%s]\n",partition);
printf("major==%d\n",major);
if ((strncmp(partition, "sd", 2) == 0)&&strlen(partition)>3 )
{
strcpy(sdimformations[g],partition);
printf("partition[%d]:%s\n",g,partition);
printf("g:%d\n",g);
g++;
}
}
printf("$$$$$$$$$$$$$$$$$$$$$$$$\n");
for(e=0;e<5;e++)
{
printf("sdimformations_check[%d]:%s\n",e,sdimformations_check);
printf("sdimformations[%d]:%s\n",e,sdimformations);
}
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
for(m=0;m<10;m++)
{
if(strncmp(sdimformations[m], sdimformations_check[m], 5) != 0)
{
UpdateDevices();
printf("sleeping\n");
sleep(10);
}
}
fclose(pf);
}
return 0 ;
}
int UpdateDevices()
{
HD_UnMount(2);
int Host0Count = USB_Host_Mount();
printf("host0count = %d \n",Host0Count);
return 1;
}
int USB_Host_Mount()
{
int i = 0 ;
int j = 0;
int z = 1;
char path[60];
char hdd[30];
memset(g_hdPath,0,sizeof(g_hdPath));
//memset(g_mountPath,0,sizeof(g_mountPath));
FILE *pf;
char stream[MAX_READ_BUFFER_SIZE+1];
char partition[MAX_PARTITION_NAME_LENGTH];
int major, minor, size;
int g=0,e=0,k=0,m=0;
//memset(sdimformations,0,sizeof(sdimformations));
if (!(pf = fopen("/proc/partitions", "r")))
{
perror("open /proc/partitions");
return 0 ;
}
printf("\rcome into findpart\n");
for(i=0;i < 10;i++)
{
sprintf(path,"/dev/%s",sdimformations[i]);
printf("path==%s\n",path);
while(part_in_use[z-1]!= 0 && z <=10)
z++;
if(z>10) {
HD_UnMount(2);
z=1;
while(part_in_use[z-1]!= 0 && z <=10)
z++;
}
sprintf(hdd,"/mnt/USB%d",z);
printf("hdd=%s\n",hdd);
if(!(mount (path, hdd, "vfat", MS_RDONLY |MS_NOSUID | MS_NODEV, "iocharset=utf8")))
{
part_in_use[z-1] = 1;
sprintf(g_hdPath[j]," USB%d",z);
//strcpy(g_mountPath[j],path);
printf("mount to %s seeceful!",hdd);
j++;
}
else if(!(mount (path, hdd, "ntfs",MS_RDONLY|MS_NOSUID | MS_NODEV, "nls=utf8")))
{
part_in_use[z-1] = 1;
sprintf(g_hdPath[j]," USB%d",z);
// strcpy(g_mountPath[j],path);
j++;
}
else continue;
}
return j;
}
int HD_UnMount(int n)
{
int i=0;
char hdd[20];
if(n== 1) //HD
{
for(i=1;i<= 10;i++)
{
sprintf(hdd,"umount /mnt/HD%d ",i);
printf("%s\n",hdd);
//if(umount(hdd)) !=0 )
// printf("umount fail\n");
//else
// printf("umount successer \n");
system(hdd);
}
}
if(n==2) //USB HD
{
for(i=1;i <= 10;i++)
{
//if(part_in_use[i-1] == 0)
//continue;
part_in_use[i-1]= 0;
sprintf(hdd,"umount /mnt/USB%d ",i);
printf("%s\n",hdd);
if((umount(hdd)) !=0 )
printf("umount fail\n");
else
printf("umount successer \n");
system(hdd);
}
}
if(n==3) //NFS
{
if((umount("/mnt/nfs1/")) !=0 )
printf("umount NFS fail\n");
else
printf("umount NFS successer \n");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -