linux查看usb文件,linux下查看usb个数

中午在图书馆闲逛,看到一本《linux指令语法辞典》,随手翻了翻,眼睛落在lsusb 列出所有usb设备那一行,顿时狂喊晕。。。于是回来试了下:

[lbxwz@localhost ~]$ lsusb

Bus 005 Device 001: ID 0000:0000

Bus 004 Device 001: ID 0000:0000

Bus 003 Device 001: ID 0000:0000

Bus 002 Device 002: ID 046d:c018 Logitech, Inc.

Bus 002 Device 001: ID 0000:0000

Bus 001 Device 001: ID 0000:0000

想我们原来还煞费苦心的读取/proc/bus/usb/device文件 真是太苦了

原来,世界是那么的大。。

呵呵

现附上我同学写的一个关于usb个数的统计程序 ,用的就是读/proc/bus/usb/device文件 ,只能说是麻烦了些。

#include "include.h"

#ifdef USBPATH

#define USBPATH "/proc/bus/usb/devices"

#else

#define USBPATH "/proc/bus/usb/devices"

#endif

#define BUFSIZE 512

#define EXTENDSIZE 256

int IfExistUSBInterface(char **USBInterfacesName)

{

FILE *FileStream;

char *FileArr;

char *ArrFlag;

char *HostUsbFlag;

char *UsbNameFlag;

char ArrFound[] = "Product";

char UsbName[32] = {0}; //用来存储USB的名字

int UsbNum = 0; //统计USB的数量

int FileNum = 0; //统计读取文件中的字符个数

int BufSize;

int i;

BufSize = BUFSIZE;

FileArr = (char *)malloc(BufSize*sizeof(char));

ArrFlag = FileArr;

if((FileStream = fopen(USBPATH,"r")) == NULL)

{

printf("File open error!\n");

exit(0);

}

while(!feof(FileStream))

{

*ArrFlag++ = fgetc(FileStream);

FileNum ++;

if(FileNum > BufSize) // 如果字符个数溢出则进行在另行分配空间

{

BufSize += EXTENDSIZE;

FileArr = (char *)realloc(FileArr,BufSize*sizeof(char));

if(FileArr == NULL)

{

printf("alloc error!\n");

exit(0);

}

ArrFlag = FileArr + FileNum;

}

}

*(ArrFlag-1) = '\0';

fclose(FileStream);

ArrFlag = FileArr;

while((HostUsbFlag = strstr(ArrFlag,"B:")) != NULL)//过滤掉文件数组中的非主>板上的usb信息

{

UsbNum ++;

HostUsbFlag = strstr(HostUsbFlag,ArrFound);//用HostUsbFlag来表示存取USB>信息的首地址

i = 0;

while(*HostUsbFlag != '\n')

{

UsbName[i++] = *(HostUsbFlag++);

}

UsbName= '\0';

UsbNameFlag = strtok(UsbName,"=");

UsbNameFlag = strtok(NULL,"=");

ArrFlag = HostUsbFlag;

strncpy(*(USBInterfacesName-1+UsbNum),UsbNameFlag,strlen(UsbNameFlag)+1);

}

free(FileArr);

return(UsbNum);//返回USB接口的数量

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值