Ich verwende einen externen Löser, um Simulationen auszuführen. Ich versuche, den externen Löser mit System (cmd) von einem MATLAB-Skript zu nennen. Das Cmd selbst läuft gut, ohne Probleme vom Terminal (ich laufe auf OSX). Jedes Mal, wenn das MATLAB-Skript ausgeführt wird, lautet der Status jedoch 139 - Segmentationsfehler. Weiß jemand, warum das passieren könnte?MATLAB-Systembefehl gibt Segmentierungsfehler?
Antwort
Bei der Ausführung system
Befehl ist dies nicht das gleiche wie ein Programm aus dem Terminal laufen, da Sie wahrscheinlich Umgebungsvariablen in Ihrer Terminal-Sitzung (über ~/.bashrc
oder ~/.bash_profile
) definiert haben, die gehen zu bewirken, wie ein Programm zugegriffen wird und Renn.
Wenn Sie über Umgebungsvariablen verfügen, die für die erfolgreiche Ausführung des Programms festgelegt werden müssen, verwenden Sie in MATLAB setenv
, bevor Sie system
aufrufen.
Ich hatte das gleiche Problem mit meinem Matlab (R2016b), aber die Lösung war genau das Gegenteil.
Anstelle von Variablen, system()
definiert LD_LIBRARY_PATH
definiert, die zu einigen gemeinsam genutzten Bibliotheken mit Matlab umgeleitet, die nicht gut mit meinem Programm saß. Nach dem Löschen LD_LIBRARY_PATH
in meinem Skript, alles hat gut funktioniert. Sie können das zum Beispiel damit tun:
env -u LD_LIBRARY_PATH
- 1. strcpy gibt mir Segmentierungsfehler
- 2. Fscanf, das einen Segmentierungsfehler gibt
- 3. Segmentierungsfehler C++ Warum gibt mein Programm einen Segmentierungsfehler?
- 4. Warum gibt diese Instanz von strstr Segmentierungsfehler?
- 5. Warum gibt mir das einen Segmentierungsfehler?
- 6. Rekursive Funktion gibt gelegentlich einen Segmentierungsfehler zurück
- 7. MPI Ring Leader Wahl gibt Segmentierungsfehler zurück
- 8. /bin/bash gibt einen Segmentierungsfehler beim Start
- 9. Zugriff auf Strukturelement über unique_ptr gibt Segmentierungsfehler
- 10. Segmentierungsfehler Python
- 11. gethostbyname() Segmentierungsfehler
- 12. xdrmem_create Segmentierungsfehler
- 13. wkhtmltopdf Segmentierungsfehler
- 14. Segmentierungsfehler - sprintf
- 15. Segmentierungsfehler: g_ptr_array_foreach
- 16. Segmentierungsfehler - C
- 17. Segmentierungsfehler OpenMPI
- 18. Segmentierungsfehler - Wie!
- 19. Malloc Segmentierungsfehler
- 20. ifstream Segmentierungsfehler
- 21. Unerwarteter Segmentierungsfehler
- 22. Segmentierungsfehler 11?
- 23. strcmp Segmentierungsfehler
- 24. Seltsame Segmentierungsfehler
- 25. Python Segmentierungsfehler?
- 26. Segmentierungsfehler: 11
- 27. Segmentierungsfehler C++
- 28. Segmentierungsfehler beheben
- 29. Segmentierungsfehler. Warum?
- 30. Dieser C-Code gibt mir einen Segmentierungsfehler in Codeblocks
Es ist wirklich unmöglich zu sagen. Es ist ein Problem mit Ihrem externen Programm, nicht MATLAB. Haben Sie Umgebungsvariablen, auf die das externe Programm angewiesen ist? – Suever
Ja, es gibt bestimmte Umgebungsvariablen in meinem Home-Verzeichnis .bash_profile – jfherrm
Richtig, also werden keine davon respektiert, wenn Sie einen 'system'-Befehl von MATLAB ausführen. Sie müssen 'setenv' verwenden, um die notwendigen Umgebungsvariablen zu setzen – Suever