LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: easycat

一个关于如何获得键盘输入的问题

[复制链接]
发表于 2007-1-2 15:49:29 | 显示全部楼层
有办法跳出!就是用版主给出的例子里面set_keypress函数可以实现(具体实现请高手援助)
我记得,好像没有按键的时候,使用getchar()没有输入可以返回一个值,不知道是否-1

再等一下某位高人来吧,我记得是可以的,在某本书上有说过。
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:24:56 | 显示全部楼层
int main(){
        char c;
        struct timespec req = { 0, 99999999 };

        atexit(&reset);
        set();

        fcntl(0, F_SETFL, O_NONBLOCK);
        setvbuf(stdout, (char *)NULL, _IONBF, 0);

        while( (c=getchar()) != 'q' ){
                nanosleep(&req, NULL);
                if ( c == EOF)
                        putchar('_');
                else
                        putchar(c);
        }
}
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:28:11 | 显示全部楼层
重了....
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:37:53 | 显示全部楼层
可否加加几句解释啊,版主!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:48:46 | 显示全部楼层
fcntl(0, F_SETFL, O_NONBLOCK);
把标准输入设置为非阻塞IO模式
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:56:10 | 显示全部楼层
atexit(&reset);
set();
还有不少需要include 进来的头文件呢

我还不明白为什么要在while()循环里用nanosleep()函数,有什么用?
况且,nanosleep好像怪怪的,怎么可以精确到nano

man nanosleep 中说了一些什么10ms之类的东东,就是感觉怪怪的!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:59:32 | 显示全部楼层
atexit(&reset);
set();
还有一些需要include 进来的文件呢?

我还不明白用 nanosleep函数有什么用?版主还把它设置成sleep 1 秒
感觉用到nanosleep就是怪怪的,man了一下nanosleep,还有说什么 10ms之类的东东
我认为,能不用nanosleep就最好不要用了
回复 支持 反对

使用道具 举报

发表于 2007-1-2 16:59:52 | 显示全部楼层
自己不会man么?
自己查apue
sleep是为了看的清楚
否则_打印的太快了
回复 支持 反对

使用道具 举报

发表于 2007-1-2 17:01:22 | 显示全部楼层
晕!!!还以为刚才发送失败,我又重写了一遍!
回复 支持 反对

使用道具 举报

发表于 2007-1-2 17:03:36 | 显示全部楼层
我man不到set()函数啊? apue 是什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表