相关疑难解决方法(0)

如何在C语言中处理Linux控制台中按下的键?

我正在使用Linux控制台,我想做一个输出随机字符的程序,直到按下ESC.我怎样才能制作这样的键盘处理程序?

c linux keyboard

14
推荐指数
3
解决办法
3万
查看次数

非阻塞获取角色

  • 平台:Linux 3.2.0 x86(Debian 7)
  • 编译:GCC 4.7.2(Debian 4.7.2-5)

我正在编写一个函数,如果stdin中已存在一个字符,则从stdin中读取单个字符.如果stdin为空,则该函数假设不执行任何操作并返回-1.我用Google搜索非阻塞输入并指向poll()select().首先我尝试使用select(),但我无法让它工作,所以我尝试了poll()并得出了相同的结论.我不确定这些函数究竟是做什么的,但是根据我对poll()的文档的理解,如果我这样调用它:

struct pollfd pollfds;
pollfds = STDIN_FILENO;
pollfds.events = POLLIN;
poll(pollfds, 1, 0);
Run Code Online (Sandbox Code Playgroud)

if(pollfds.revents&POLLIN)如果"可以在不阻塞的情况下读取高优先级数据以外的数据",则为真.但是poll()总是在我的测试情况下超时.我如何测试函数可能是问题,但我想要的功能正是我正在测试的.这是当前的功能和测试情况.

#include <poll.h>
#include <stdio.h>
#include <unistd.h>

int ngetc(char *c)
{       
    struct pollfd pollfds;
    pollfds.fd = STDIN_FILENO;
    pollfds.events = POLLIN;

    poll(&pollfds, 1, 0);

    if(pollfds.revents & POLLIN)
    {
            //Bonus points to the persons that can tell me if
            //read() will change the value of '*c' if an error
            //occurs during the read
        read(STDIN_FILENO, c, 1);
            return 0; …
Run Code Online (Sandbox Code Playgroud)

c linux stdin polling

10
推荐指数
1
解决办法
7366
查看次数

按任意键继续Linux C++

我不确定在Linux中是否有任何不同,但我在网上发现这个:

    cout << "Press Enter to Continue...";
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
Run Code Online (Sandbox Code Playgroud)

应该足够了,#include<limits>当然在标题中.

但是,它似乎在我的程序中不起作用.

它编译,运行,但它不等待.

基本上,我有一个菜单,导致方法调用显示屏幕上的人员列表.我希望在系统返回菜单之前暂停该列表.

这是菜单中的代码:

//Manager's Menu
void SelectionPage::showManagerMenu(){
    char option;
    while(true)
    {
        system("clear");                                                //Clears the terminal
        cout<<"             Flat Manager's Menu"<<endl<<endl;           //Display manager's menu
        cout << "Select Manager option" << endl;
        cout << "a) Add a new Flat Member" << endl;
        cout << "b) Delete an existing Flat Member" << endl;
        cout << "c) List Flat Members" << endl;
        cout << "d) Duties" <<endl;
        cout << "e) Resources" <<endl;
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ linux key cin any

2
推荐指数
2
解决办法
3732
查看次数

标签 统计

linux ×3

c ×2

any ×1

c++ ×1

cin ×1

key ×1

keyboard ×1

polling ×1

stdin ×1