主題:EM335x開發(fā)板Linux系統(tǒng)中usb設備自動檢測問題 共有44802人關注過本帖 |
---|
fqjboy |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
EM335x開發(fā)板Linux系統(tǒng)中usb設備自動檢測問題 Post By:2016-5-9 16:41:00 [只看該作者]
我這里有貴公司給的一個小程序,test_hotplug,是用來檢測是否有usb設備插入的,如果有就將其掛載到某個目錄下。程序里當接收到Linux內核的消息后,會判斷這個信息里是否有字符串“sda1”,有的話就掛載;沒有的話繼續(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 設備的插拔會出現(xiàn)字符信息,通過比較不同的信息確定特定設備的插拔,在這添加比較代碼 */ 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樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2016-5-9 17:42:00 [只看該作者]
你好,進入到判斷中說明肯定有這個字符串,查看打印信息可以把屏蔽的printf打開看看buf里面的內容。
|
單帖管理 | 引用 | 回復 |
fqjboy |
3樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2016-5-10 13:00:00 [只看該作者]
如何打開屏蔽的printf呢?
|
單帖管理 | 引用 | 回復 |
x10 |
4樓 |
Post By:2016-5-10 13:02:00 [只看該作者]
就是uncomment //。
|
|
單帖管理 | 引用 | 回復 |
fqjboy |
5樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2016-5-10 13:10:00 [只看該作者]
原來是這個意思,其實我貼的這段代碼是原版的,我實際用的代碼里在第二層的if那有printf("%s\n", buf)的語句。其實我的疑惑就是buf里肯定有sda的字符,但在輸出的buf里卻看不到
|
單帖管理 | 引用 | 回復 |
hzc |
6樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2016-5-10 15:04:00 [只看該作者]
你好,我測試了一下,打印信息中有這一句:
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
|
單帖管理 | 引用 | 回復 |