日期:2014-05-16  浏览次数:20658 次

linux open 字符设备返回错误
在海思linux下,使用open以字符设备打开flash的某个分区返回-1,不知道原因呀,希望得到大家的指点:
 int fk=0;
 fk=open("/dev/mtd1",O_RDWR); 
ota_debug("%x\n",fk);
打印出的fk是0xffffffff
不知道是不是和内核有关系呢?


------解决方案--------------------
df命令查看一下,mtd1的情况。
------解决方案--------------------
你定义的int是有符号整型,4个字节,你的系统默认应该是逻辑补充位,即补齐的是符号位,-1的符号位是1,所以会出现0xffffffff这中情况。
------解决方案--------------------
#include <stdio.h>
#include <fcntl.h>
#include <error.h>
#include <stdlib.h>

int main(void)
{
int fk; 
if(fk = open("/dev/mtd1",O_RDWR) < 0)
{
perror("open");//根据错误号打印错误,头文件是<error.h>
exit(1)
}

return 0;
}
通过这个程序可以发现错误,运行后的错误提示是No such file or directory