Вы хотите использовать библиотеку readline .Поддержка стрелок вверх (и многих других дополнительных привязок клавиш) не существует при стандартном вводе-выводе, но она легко доступна с readline .
Также обратите внимание, что ваша программа должна зацикливаться навместо рекурсивных вызовов между main и parse.
// This is prog.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <readline/readline.h>
#include <readline/history.h>
void parse(char* command){
if(!strcmp(command,"exit")){
exit(1);
}
}
int main (int argc, char* argv[]){
char *buffer;
while ((buffer = readline("command >")) != NULL) {
add_history(buffer);
parse(buffer);
free(buffer);
}
return 0;
}
Вам придется строить с readline
:
cc prog.c -lreadline
Для получения дополнительной информации о readline
см.это link