当前位置: 首页 > 面试题库 >

在Linux上使用kbhit()和getch()

东方弘壮
2023-03-14
问题内容

在Windows上,我具有以下代码来查找输入而不会中断循环:

#include <conio.h>
#include <Windows.h>
#include <iostream>

int main()
{
    while (true)
    {
        if (_kbhit())
        {
            if (_getch() == 'g')
            {
                std::cout << "You pressed G" << std::endl;
            }
        }
        Sleep(500);
        std::cout << "Running" << std::endl;
    }
}

但是,看到没有conio.h,在Linux上实现相同目标的最简单方法是什么?


问题答案:

上面引用的ncurses howto可能会有所帮助。这是一个示例,说明如何像conio示例一样使用ncurses:

#include <ncurses.h>

int
main()
{
    initscr();
    cbreak();
    noecho();
    scrollok(stdscr, TRUE);
    nodelay(stdscr, TRUE);
    while (true) {
        if (getch() == 'g') {
            printw("You pressed G\n");
        }
        napms(500);
        printw("Running\n");
    }
}

请注意,对于ncurses,iostream不使用标头。这是因为将stdio与ncurses混合会产生意外结果。

顺便说一下,ncurses定义TRUEFALSE。正确配置的ncurses将为ncurses使用与bool用于配置ncurses的C
++编译器相同的数据类型。



 类似资料:
  • 我们有一个内部开发的基于客户机/服务器的应用程序。客户端和服务器通过TCP/IP连接与特定于应用程序的协议进行通信。客户端在Windows上运行,服务器在Linux上运行。所有计算机都位于相同的Active Directory/Kerberos域/领域中。 目前,用户在启动应用程序时输入用户名和密码。服务器检查用户名和密码(身份验证)。服务器还根据用户名确定对资源的访问(授权)。 我们希望向应用程

  • 本文向大家介绍在Ubuntu Linux上安装和使用Git和GitHub,包括了在Ubuntu Linux上安装和使用Git和GitHub的使用技巧和注意事项,需要的朋友参考一下 Git的简介 Git是2005年Linus Torvalds 为了帮助管理 Linux(R) 内核开发而开发的一个开放源码的版本控制软件,正如所提供的文档中说的一样: Git 是一个快速、可扩展的分布式版本控制系统,它具

  • 我曾经能够在NetBeans 8中安装和使用Sass,如关于如何在NetBeans 8.0.1中使用Sass的顶级答案所述 现在,使用当前版本的Sass(1.14.1),安装是不同的。基本上只是下载和解焦油。完成了,我已经将NetBeans指向了正确的位置。但是当前版本的Sass不能从NetBeans中正确运行:

  • 本文向大家介绍在Linux上安装和使用Docker的方法,包括了在Linux上安装和使用Docker的方法的使用技巧和注意事项,需要的朋友参考一下 容器现在风靡于 IT 界 —— 这很好理解。容器是轻量级的,包含应用运行所需所有东西(代码、库、运行时环境、系统设置,以及依赖关系)的独立的包。每个容器都部署于它自己的 CPU、内存、块 I/O,以及网络资源上,所有这些都不依赖于某个内核和操作系统。这

  • 问题内容: 我正在编写一个非常小的守护程序,即使系统处于严重压力下也必须保持响应。我正在研究SCHED_FIFO和SCHED_RR在调度方面的差异,以及试图确定合理的优先级。 哪个调度程序适用于小型但关键的监视守护程序,哪个优先级是合理安全的?在试图了解两者之间的差异时,我仍然感到有些困惑。 我的程序在3k以下分配(并使用mlockall()),它向xenbus写入约600字节然后进入睡眠状态,但

  • 我听说Linux还不支持TextMesh。还是真的吗? llnotFoundException:TMPro_Plugin tmpro.editorUtilities.tmpro_fontassetCreatorWindow.onDisable()(在/root/.config/unity3d/cache/packages/packages.unity.com/com.unity.textMeshP