SCO 下的ioctl问题
通过ioctl( 0, MAPCONS, 0L )取viedeo RAM地址,结果返回-1,perror提示Invalid argument。仔细使用man screen看了帮助,实在不知原因,望各位不吝赐教。使用代码如下:
int ret;
char *screen;
if( ( ret = ioctl( 0, MAPCONS, 0L ) ) < 0 ) {
perror( "ioctl GET addr" );
exit( -1 );
} else {
screen = ( char * ) ret ;
printf( "video ram: 0x%xn" , screen );
}
运行时提示:
ioctl GET addr: Invalid argument.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
[quote]原帖由 "liupch"]头文件呢?是否包含了正确的头文件?[/quote 发表:
头文件没有包含正确也能编译通过?还能运行出结果?厥倒。
#include <sys/types.h>;
#include <sys/console.h>;
#include <sys/vid.h>;
#include <sys/ioctl.h>;
头文件呢?是否包含了正确的头文件?
定义显示模式ret = ioctl( 0, SW_VGA80x25, 0L ) )同样提示Invalid argument 。
why?
你是不是在这之前没有定义显示模式?因为只有定义了显示模式才能知道显存地址。
/* 设置 VGA 80X25 显示方式 */
if (-1==ioctl(0,SW_VGA80x25,0l)) {
perror("ioctl";
exit(1);
}
if ((screen=(char*)ioctl(0,MAPCONS,0l))==(char*)(-1)) {
perror("ioctl";
exit(2);
}