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);
}
가 어떻게 할 수 배쉬 프롬프트 분명한 신호에 의해 인터럽트 프로그램 후?
핸들러 (에코를 켜기 전에)에서 [플러시'stdin'] (https://stackoverflow.com/questions/7898215/how-to-clear-input-buffer-in-c)가 작동합니까? –
@EugeneSh. char를 얻거나 stdin에서 읽는 다른 유형을 사용하면 해당 프로그램이 핸들에서 멈추지 않고 stdin에서 다음 행 끝 문자를 기다립니다. fpurge와 같은 함수는 나에게 아무런 영향을 미치지 않습니다. – Shadasviar