Also arbeite ich an einem Projekt zum Erstellen und Verwenden einer Shell. Eine Sache, die getan werden muss, ist "| execute | -p | prompt | sollte dem Benutzer erlauben, eine benutzerdefinierte Eingabeaufforderung zu wählen. Ansonsten sollte der Standardwert" 257sh> "sein. Ich habe meinen Code geschrieben, um dies aber egal zu tun Es geht weiter in die else-Anweisung. Nach einigen Experimenten weiß ich, dass meine argv[1] == "-p"
Zeile das Problem verursacht, denn ohne sie funktioniert der Code. Die Sache ist, dass wenn ich argv [1] drucke, "-p" (vorausgesetzt, das ist, was ich Eingang). hier ist meine Shell-Funktion.Vergleichen von C-Strings vs String-Zeiger für die Gleichheit
void shellLoop(char *n)
{
char *line;
char **args;
int status;
char name = n;
do{
printf("%s>", n);
line = sysReadLine();
args = splitLine(line);
status = execute(args);
free(line);
free(args);
}while(status);
}
Und hier ist meine Hauptfunktion
int main(int argc, char *argv[])
{
if(argc == 3 && argv[1] == "-p"){
shellLoop(argv[2]);
}
else{
shellLoop("257sh");
}
return EXIT_SUCCESS;
}
'argv [1] ==" -p "': benutze 'strcmp' anstelle von' == 'in C. – BLUEPIXY