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サーバーでは機能しません。

これは、以下の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;
    }

そして私の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 に答える