关于c 语言mmap的一个问题。。。。。
#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<unistd.h>#include<sys/mm...
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
int main(int argc, const char *argv[])
{
int fd, i;
unsigned int *p;
fd = open("/dev/fb0", O_RDWR);
if (fd < 0) {
perror("open error");
exit(1);
}
p = (unsigned int *)mmap(NULL, 1366*768*4, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, 0);
if (p == MAP_FAILED) {
perror("mmap error");
exit(1);
}
close(fd);
for (i = 0; i < 1366 * 768; i ++) {
p[i] = 0xffffff;
usleep(1000);
}
munmap(p, 1366 * 768 * 4);
return 0;
}
环境: LINUX 13.10 64BIT
实现功能: 向屏幕输出白画面,一个像素点一像素点的输出。。。。
编译可以通过,,, 但是只要一运行 就出错误
mmap error: Invalid argument
但是我把其中的1366改为1024就不报错。。。但是程序却没有正确现象。。。。why
????? 展开
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
int main(int argc, const char *argv[])
{
int fd, i;
unsigned int *p;
fd = open("/dev/fb0", O_RDWR);
if (fd < 0) {
perror("open error");
exit(1);
}
p = (unsigned int *)mmap(NULL, 1366*768*4, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, fd, 0);
if (p == MAP_FAILED) {
perror("mmap error");
exit(1);
}
close(fd);
for (i = 0; i < 1366 * 768; i ++) {
p[i] = 0xffffff;
usleep(1000);
}
munmap(p, 1366 * 768 * 4);
return 0;
}
环境: LINUX 13.10 64BIT
实现功能: 向屏幕输出白画面,一个像素点一像素点的输出。。。。
编译可以通过,,, 但是只要一运行 就出错误
mmap error: Invalid argument
但是我把其中的1366改为1024就不报错。。。但是程序却没有正确现象。。。。why
????? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询