6

这是一个示例函数:

    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
4

1 回答 1

4

这篇文章介绍了如何阅读单个击键:

检测单个击键

接受的答案使用一小段 C 代码来返回单独的击键。然后,您可以捕获密码的击键,并且不会向用户或*.

于 2012-09-20T18:44:44.957 回答