4 Stimmen

fputs stürzt in C auf Mac mit Xcode ab

Ich habe eine Befehlszeilenanwendung und habe den Code

chdir("/var");

FILE *scriptFile = fopen("wiki.txt", "w");

fputs("tell application \"Firefox\"\n activate\n",scriptFile);

fclose(scriptFile);

und wenn ich es in Xcode ausführen, erhalte ich eine EXC_BAD_ACCESS, wenn es zum ersten fputs(); aufrufen

2voto

sth Punkte 210180

Wahrscheinlich die Aufforderung an fopen() fehlgeschlagen, weil Sie keine Schreibrechte in /var . In diesem Fall fopen() gibt zurück. NULL und vorbei NULL a fputs() führt zu einer Zugriffsverletzung.

2voto

WhirlWind Punkte 13556

Überprüfen Sie, ob die Datei ordnungsgemäß geöffnet wird?

Normalerweise benötigen Sie Superuser-Rechte, um in /var zu schreiben, also ist dies wahrscheinlich Ihr Problem.

2voto

Jason Coco Punkte 77369

Ich habe dies bereits in einem Kommentar beantwortet und ein paar Leute haben Ihnen gesagt, was Sie falsch gemacht haben, aber ich habe beschlossen, einen kleinen Beispielcode mit Fehlerprüfung hinzuzufügen:

chdir("/var");

FILE *scriptFile = fopen("wiki.txt", "w");
if( !scriptFile ) {
  fprintf(stderr, "Error opening file: %s\n", strerror(errno));
  exit(-1);
} else {
  fputs("tell application \"Firefox\"\n activate\n",scriptFile);
  fclose(scriptFile);
}

Nun wird eine Fehlermeldung angezeigt, wenn die Datei nicht geöffnet werden kann, und es wird beschrieben, warum (in Ihrem Fall: Zugriff verweigert). Zu Testzwecken können Sie dies erreichen, indem Sie 1) den Dateinamen durch einen weltweit beschreibbaren Namen ersetzen, z. B. "/tmp/wiki.txt" ; oder 2) Sie führen Ihr Dienstprogramm mit den Rechten sudo ./your_command_name .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X