/ / History-Implementierung in einem einfachen Shell-Programm in c - c

History-Implementierung in einem einfachen Shell-Programm in c - c

Ich bin neu und lerne c alleine. Es ist mir gelungen, einen einfachen Shell-Code in c zu schreiben, aber mein Problem besteht jetzt darin, dass Befehle eingegeben werden, so dass beim Eingeben eines Befehls "Verlauf" die zuletzt eingegebenen Befehle auf dem Bildschirm angezeigt werden. Ein Beispiel-Code oder andere Materialien zu lesen, um mir helfen, meine Shell haben Geschichte wird geschätzt.

Antworten:

4 für die Antwort № 1

Es gibt viele Möglichkeiten, dies zu erreichen. Du könntest das benutzen GNU-Readline-BibliothekDas ist wirklich nett für so etwas. Dies würde viel mehr als ein einfaches zur Verfügung stellen history Befehl.

Aber nur eine einfache Geschichte zu implementieren wäre einfacher. Wenn Sie ein festes Limit für Befehle in der History haben, wäre ein einfaches Array ausreichend, vielleicht so:

static const char *history[HISTORY_MAX_SIZE];
static const unsigned history_count = 0;

void add_command_to_history( const char *command )
{
if (history_count < HISTORY_MAX_SIZE) {
history[history_count++] = strdup( command );
} else {
free( history[0] );
for (unsigned index = 1; index < HISTORY_MAX_SIZE; index++) {
history[index - 1] = history[index];
}
history[HISTORY_MAX_SIZE - 1] = strdup( command );
}
}