mmap映射文件的时候出现错误,提示no such device,求大神指导。

没有壳的snail 没有壳的snail 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
用mmap把一个字符设备文件映射到内存中,结果出现错误,字符设备文件是存在的,也是可以打开的,请问各位大神是什么问题,代码如下。
#define print_tty "/dev/ttyS2"


int main(int argc, char **argv)
{
int scan_fd,fd,seri_fd;
char s[32] = {0};
pthread_t thread;
FILE *fp = NULL;
int on = 1;
unsigned long mmap_size, mmap_addr,addr_seri,size_seri;
int mmap_addr_fd = -1;
char *mmap_addr_seri;

//打印机全局变量和共享内存初始化
seri_fd = open(print_tty, O_RDWR);
if(seri_fd < 0)
{
perror("open");
close(mmap_addr_fd);
return (-1);
}

scan_fd = open("/dev/scanner", O_RDWR);



if(scan_fd < 0)
{
perror("open");
close(mmap_addr_fd);
close(seri_fd);
return (-1);
}

fd = open("/proc/memshare/phymem_addr", O_RDONLY);
if(fd < 0)
{
printf("cannot open phymem_addr\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}
read(fd, s, sizeof(s));
sscanf(s, "%lx", &addr_seri);
close(fd);

fd = open("/proc/memshare/phymem_size", O_RDONLY);
if(fd < 0)
{
printf("cannot open phymem_size\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}
read(fd, s, sizeof(s));
sscanf(s, "%lu", &size_seri);
close(fd);

printf("addr_seri=%lx-------size_seri=%lu\n",addr_seri,size_seri);

mmap_addr_seri = mmap(0, size_seri, PROT_READ, MAP_SHARED, scan_fd, addr_seri);
if((char *)mmap_addr_seri == NULL)
{
printf("no data in sharemem\n");
close(mmap_addr_fd);
close(seri_fd);
close(scan_fd);
return -1;
}

if(mmap_addr_seri == (void *)(-1))
{
perror("mmap error");
}

printf("mmap_addr_seri------------%x\n",mmap_addr_seri);
}
...全文
评论 1
收藏 已收藏
分享
返回顶部