Ich benutze wahrscheinlich meine Lesefunktion mit einer Art von Fehler, aber ich kann es nicht erkennen.So verwenden Sie den Systemaufruf Lesen? Segmentierungsfehler (core dumped) Fehler
#include <unistd.h>
#include <sys/sysinfo.h>
#include <sys/syscall.h>
void exitProgram()
{
syscall(SYS_write, 1, "norma", slen("norma"));
syscall(SYS_exit, 1 , 0);
}
int main()
{
func_desc arr[2];
int choice;
arr[0].name = "exit";
arr[0].func = &exitProgram;
syscall(SYS_write, 1, "Choose: ", slen("Choose: "));
syscall(SYS_read, 0, choice, sizeof(choice));
arr[choice-1].func();
return 0;
}
Wenn Wahl '1' ist, dann sollte es exitProgram() aufrufen, sondern sagt, es Segmentation fault (core dumped). Wenn ich eine bestimmte Anzahl schreiben dann funktioniert es (Beispiel):
arr[0].func();
Wie kann ich diese Segmentation fault beheben (Core Dump) Problem?
Schritt 1: Überprüfen Sie den Rückgabewert aller Systemaufrufe, um sicherzustellen, dass sie erfolgreich sind. Schritt 2: Überprüfen Sie, was sich tatsächlich in "Wahl" befindet, bevor Sie es verwenden. – melpomene
Versuchen Sie vielleicht auch, diesen Code mit 'fread',' fwrite' und 'exit' zu arbeiten, bevor Sie mit syscalls herumspielen. – melpomene
Sind Sie sich über diese Argumente für 'read' sicher? –