Как убрать ^C при вызове сигнала
Есть код:
void signal_handler(int sig)
{
if (sig == SIGINT)
{
ioctl(STDIN_FILENO, TIOCSTI, "\n");
rl_replace_line("", 0);
rl_on_new_line();
}
}
При нажатии на Ctrl + C вызывается сигнал и в терминал программы выводится ^C. Как можно это исправить что бы ничего не выводилось?
Ответы (1 шт):
Автор решения: 64-core CPU
→ Ссылка
С помощью "\b"(backspace) можно удалять символы в консоли. В контексте вопроса это можно сделать так:
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void signalHandler( int sigNo ){
printf( "\b\b" );// delete ^ and C
printf( "Signal got: %i\n", sigNo );
}
int main( int argc, char* argv[], char* envp[] ){
signal( SIGINT, signalHandler );
pause();
printf( "End of program.\n" );
return 0;
}
Вывод в консоли:
$ ./main
Signal got: 2
End of program.