当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于编写程序访问usb设备的问题,请高手解答
帖子发表于 : 2010-05-20 15:31 

注册: 2010-02-03 9:50
帖子: 16
送出感谢: 0 次
接收感谢: 0 次
在网上找过很多相关的资料,始终没有找到解决的办法,希望有高人帮忙,下面描述下我的问题

我的ubuntu装在VM上,在里面,USB设备会自动挂载到/media/disk中,用df -hl命令查看得到如下结果:
/dev/sdb 1.9G……(省略中间可用空间等的显示) /media/disk

用ls -l /dev/sdb命令,得到如下结果:
brw-rw---- 1 root disk 8 , 16 2010-05-20 14:16 /dev/sdb

之后,写了个简单的test程序,来访问/dev/sdb,获得句柄,代码如下:
int main(void)
{
int fd = open("/dev/sdb", O_WRONLY|O_DIRECT);
printf("The file handle is:%x\n",fd);
if(fd == -1) close(fd);
close(fd);

printf("The file is closed, open again\n");

fd = open("/dev/sdb", O_WRONLY|O_DIRECT);
printf("The file handle is:%x\n",fd);
if(fd == -1) close(fd);
close(fd);
}

好了,运行程序的时候,输出的结果为:
The file handle is:ffffffff
The file is closed, open again
The file handle is:ffffffff
说明文件打开失败,fd的值为-1。

后来自己觉得可能是权限问题,在运行test程序前,先执行了如下命令:
sudo chmod 777 /dev/sdb
然后用ls -l /dev/sdb命令查看,得到如下结果:(即为/dev/sdb的权限全开)
brwxrwxrwx 1 root disk 8 , 16 2010-05-20 14:16 /dev/sdb
之后再次运行test程序,输出结果如下:
The file handle is:3
The file is closed, open again
The file handle is:3
(注:不同机器得到的fd值可能不一样,但肯定不为-1)
这说明文件成功打开了,获得了正确的文件标示,本来以为大功告成,可是问题来了
我再次运行test程序的时候,文件又打开失败,结果和未修改权限一样……

后来查明原因,在使用sudo chmod 777 /dev/sdb修改权限后,运行test程序得到正确结果后,权限又会还原为之前的状态,即运行完test程序后,使用ls -l /dev/sdb查看,结果会自动还原为如下状态:
brw-rw---- 1 root disk 8 , 16 2010-05-20 14:16 /dev/sdb

这样一来,每次运行test程序,都要做权限修改~~

我不知道这个问题是不是跟mount方式有关,能不能有办法让usb挂载上去的时候,直接就是brwxrwxrwx的权限状态?我试过在mount的时候 -o 里面设置umask,dmask,fmask等参数,但是不奏效,希望有达人可以帮忙解决~
我在编写ubuntu下的一个程序,这个问题不解决,我后面的事都没法做了,希望知道的高手尽快帮我解答,谢谢


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于编写程序访问usb设备的问题,请高手解答
帖子发表于 : 2010-05-21 1:52 
头像

注册: 2008-12-13 19:39
帖子: 13284
地址: 物华天宝人杰地灵
送出感谢: 1
接收感谢: 6
干脆加个启动脚本,运行程序前专门改权限。。。 :em03


_________________
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译