是否有可能从扫描控制台读取,而不回显字符?(Is it possible to read from

2019-09-22 17:01发布

下面是一个例子的功能:

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

并测试功能:

    >   passwordEntry()
    Enter your password: 
    1: test
    > 

有没有办法来抑制什么类型的用户? 或与其他一些字符取代它呢? 我已经写了的Tcl / Tk功能,提示用户输入密码,但它并没有我们的Linux服务器上运行。

下面是从下面保罗的链接的示例。 这不工作,要么在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;
    }

而我test.r脚本:

    system('R CMD SHLIB getkey3.c')
    dyn.load("getkey3.so")
    .C("mygetch",as.integer(0))
    dyn.unload("getkey3.so")

我得到这个:

    > .C("mygetch",as.integer(0))
    [[1]]
    [1] -1

Answer 1:

这篇文章介绍了如何读取各个按键:

检测单按键

该接受的答案使用一小块的C代码,返回各次击键。 然后,您可以捕捉到击键输入密码并没有呼应给用户或者一个*



文章来源: Is it possible to read from the console with scan without echoing the characters?
标签: r passwords