2017-11-30 8 views
0

나는 간단한 코드 마녀 getpass에 의해 암호를 얻을 수 있습니다 getpass에서 프로그램이 중단 될 때 bash stdout에 제공된 문자를 쓰지 않으려면 어떻게해야합니까?

if (!(pass = getpass("Enter password:\n"))) { 
    perror("getpass failed"); 
    return -1; 
} 

또한 내가 신호 처리기 마녀 종료 프로그램이 있습니다.

암호를 터미널에서 가져올 때 신호가 잡히면 프로그램이 중지되지만 bash 프롬프트에 사용자 문자가 제공됩니다. 신호 처리기의

코드 :

void handle (int sig) { 
    printf("Time for password entering expired!\n"); 
    /* Enable echo on terminal after aborted getpass*/ 
    system("stty echo"); 
    exit(-1); 
} 

가 어떻게 할 수 배쉬 프롬프트 분명한 신호에 의해 인터럽트 프로그램 후?

+0

핸들러 (에코를 켜기 전에)에서 [플러시'stdin'] (https://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c)가 작동합니까? –

+0

@EugeneSh. char를 얻거나 stdin에서 읽는 다른 유형을 사용하면 해당 프로그램이 핸들에서 멈추지 않고 stdin에서 다음 행 끝 문자를 기다립니다. fpurge와 같은 함수는 나에게 아무런 영향을 미치지 않습니다. – Shadasviar

답변