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