主題:EM335x開(kāi)發(fā)板Linux系統(tǒng)中usb設(shè)備自動(dòng)檢測(cè)問(wèn)題 共有44800人關(guān)注過(guò)本帖 |
---|
fqjboy |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
EM335x開(kāi)發(fā)板Linux系統(tǒng)中usb設(shè)備自動(dòng)檢測(cè)問(wèn)題 Post By:2016-5-9 16:41:00 [只看該作者]
我這里有貴公司給的一個(gè)小程序,test_hotplug,是用來(lái)檢測(cè)是否有usb設(shè)備插入的,如果有就將其掛載到某個(gè)目錄下。程序里當(dāng)接收到Linux內(nèi)核的消息后,會(huì)判斷這個(gè)信息里是否有字符串“sda1”,有的話就掛載;沒(méi)有的話繼續(xù)循環(huán);部分代碼如下:
/* Netlink message buffer */ char buf[UEVENT_BUFFER_SIZE * 2] = {0}; recv(hotplug_sock, &buf, sizeof(buf), 0); //printf("%s\n", buf); /* USB 設(shè)備的插拔會(huì)出現(xiàn)字符信息,通過(guò)比較不同的信息確定特定設(shè)備的插拔,在這添加比較代碼 */ 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"); 我的問(wèn)題是當(dāng)我插上usb后,輸出的信息buf中并沒(méi)有“sda1”的子字符串,但實(shí)際情況是程序卻進(jìn)入了第二層if語(yǔ)句中,為什么? |
單帖管理 | 引用 | 回復(fù) |
hzc |
2樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2016-5-9 17:42:00 [只看該作者]
你好,進(jìn)入到判斷中說(shuō)明肯定有這個(gè)字符串,查看打印信息可以把屏蔽的printf打開(kāi)看看buf里面的內(nèi)容。
|
單帖管理 | 引用 | 回復(fù) |
fqjboy |
3樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2016-5-10 13:00:00 [只看該作者]
如何打開(kāi)屏蔽的printf呢?
|
單帖管理 | 引用 | 回復(fù) |
x10 |
4樓 |
Post By:2016-5-10 13:02:00 [只看該作者]
就是uncomment //。
|
|
單帖管理 | 引用 | 回復(fù) |
fqjboy |
5樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2016-5-10 13:10:00 [只看該作者]
原來(lái)是這個(gè)意思,其實(shí)我貼的這段代碼是原版的,我實(shí)際用的代碼里在第二層的if那有printf("%s\n", buf)的語(yǔ)句。其實(shí)我的疑惑就是buf里肯定有sda的字符,但在輸出的buf里卻看不到
|
單帖管理 | 引用 | 回復(fù) |
hzc |
6樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2016-5-10 15:04:00 [只看該作者]
你好,我測(cè)試了一下,打印信息中有這一句:
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
|
單帖管理 | 引用 | 回復(fù) |
返回首頁(yè)EM335x開(kāi)發(fā)板Linux系統(tǒng)中usb設(shè)備自動(dòng)檢測(cè)問(wèn)題 |
---|
用戶名: | |
驗(yàn)證碼: | |
內(nèi)容: | |