相关疑难解决方法(0)

C非阻塞键盘输入

我正在尝试用C语言编写一个程序(在Linux上)循环,直到用户按下一个键,但不应该要求按键继续每个循环.

有一个简单的方法吗?我想我可以做到这一点,select()但这似乎很多工作.

或者,有没有办法在程序关闭之前捕获ctrl- ckeypress进行清理而不是非阻塞io?

c linux asynchronous input nonblocking

76
推荐指数
5
解决办法
10万
查看次数

是否可以通过扫描从控制台读取而不回显字符?

这是一个示例函数:

    passwordEntry <- function() {
            cat("Enter your password: ")
            pwd <- scan(n=1, what=character(), quiet=TRUE)
            invisible(pwd)
    }
Run Code Online (Sandbox Code Playgroud)

并测试功能:

    >   passwordEntry()
    Enter your password: 
    1: test
    > 
Run Code Online (Sandbox Code Playgroud)

有没有办法压制用户输入的内容?或者换一些其他角色?我编写了一个tcl/tk函数来提示用户输入密码,但它在我们的Linux服务器上不起作用.

以下是Paul的链接示例.这在Linux或Windows上都不起作用(后者可能因为我没有合适的C编译器,所以会考虑到这一点).

getkey3.c

    #include <stdio.h>
    #include <termios.h>
    #include <unistd.h>
    void mygetch ( int *ch ) 
    {
            struct termios oldt, newt;
            tcgetattr ( STDIN_FILENO, &oldt );
            newt = oldt;
            newt.c_lflag &= ~( ICANON | ECHO );
            tcsetattr ( STDIN_FILENO, TCSANOW, &newt );
            *ch = getchar();
            tcsetattr ( STDIN_FILENO, TCSANOW, &oldt );
            return;
    }
Run Code Online (Sandbox Code Playgroud)

我的test.r剧本: …

passwords r

6
推荐指数
1
解决办法
887
查看次数

标签 统计

asynchronous ×1

c ×1

input ×1

linux ×1

nonblocking ×1

passwords ×1

r ×1