主题:EM335x开发板Linux系统中usb设备自动检测问题 共有56005人关注过本帖 |
---|
![]() fqjboy |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
EM335x开发板Linux系统中usb设备自动检测问题 ![]()
我这里有贵公司给的一个小程序,test_hotplug,是用来检测是否有usb设备插入的,如果有就将其挂载到某个目录下。程序里当接收到Linux内核的消息后,会判断这个信息里是否有字符串“sda1”,有的话就挂载;没有的话继续循环;部分代码如下:
/* Netlink message buffer */ char buf[UEVENT_BUFFER_SIZE * 2] = {0}; recv(hotplug_sock, &buf, sizeof(buf), 0); //printf("%s\n", buf); /* USB 设备的插拔会出现字符信息,通过比较不同的信息确定特定设备的插拔,在这添加比较代码 */ if( strncmp(buf, "add", 3 )==0 ) { p = strstr( buf, "sda1"); if ( (p!=NULL ) && (add1==0) ) { sleep(1); system( "umount /mnt/usb1/" ); system( "mount -t vfat -o iocharset=cp936 /dev/sda1 /mnt/usb1" ); add1 = 1; } else { p = strstr( buf, "sdb1"); 我的问题是当我插上usb后,输出的信息buf中并没有“sda1”的子字符串,但实际情况是程序却进入了第二层if语句中,为什么? |
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,进入到判断中说明肯定有这个字符串,查看打印信息可以把屏蔽的printf打开看看buf里面的内容。
|
单帖管理 | 引用 | 回复 ![]() |
![]() fqjboy |
3楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
如何打开屏蔽的printf呢?
|
单帖管理 | 引用 | 回复 ![]() |
x10 |
4楼 |
![]() |
![]()
就是uncomment //。
|
单帖管理 | 引用 | 回复 ![]() |
![]() fqjboy |
5楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
原来是这个意思,其实我贴的这段代码是原版的,我实际用的代码里在第二层的if那有printf("%s\n", buf)的语句。其实我的疑惑就是buf里肯定有sda的字符,但在输出的buf里却看不到
|
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
6楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,我测试了一下,打印信息中有这一句:
add@/devices/soc0/80080000.ahb/80090000.usb/ci_hdrc.1/usb1/1-1/1-1.4/1-1.4:1.0/host1/target1:0:0/1:0:0:0/block/sda
|
单帖管理 | 引用 | 回复 ![]() |