SCO 下的ioctl问题

发布于 2022-06-17 02:07:03 字数 767 浏览 465 评论 5

通过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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

聆听风音 2022-06-19 01:43:21

[quote]原帖由 "liupch"]头文件呢?是否包含了正确的头文件?[/quote 发表:
     

头文件没有包含正确也能编译通过?还能运行出结果?厥倒。

望笑 2022-06-19 00:56:41

#include <sys/types.h>;
#include <sys/console.h>;
#include <sys/vid.h>;
#include <sys/ioctl.h>;

╰ゝ天使的微笑 2022-06-18 18:26:12

头文件呢?是否包含了正确的头文件?

写下不归期 2022-06-18 16:43:14

定义显示模式ret = ioctl( 0,  SW_VGA80x25, 0L ) )同样提示Invalid argument 。

why?

千鲤 2022-06-18 13:54:31

你是不是在这之前没有定义显示模式?因为只有定义了显示模式才能知道显存地址。

/* 设置 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);
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文