| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: [c++/Linux] Programm im selben Ordner ausführen im Forum Code Kitchen, in der Kategorie Software Home; Hallo! Ich habe ein Problem mit einem Programm: Es sollt nur im selben Ordner ausgeführt werden, in dem auch die ...
![]() |
| | #1 (permalink) |
| Registriert seit: 02.01.07 ![]() Likes: 0 | Hallo! Ich habe ein Problem mit einem Programm: Es sollt nur im selben Ordner ausgeführt werden, in dem auch die ausführbare Datei liegt. Bei einem Doppelklick allerdings wird sie im Home-Verzeichnis ausgeführt. Dabei taucht jetzt das Problem auf, dass das Programm jetzt sämtliche Konfigurations- und Mediendateien nicht mehr finden kann. (Die Pfade sind ja i.d.R. relativ angegeben) Normalerweise könnte man dafür jetzt ein zweizeiliges Bash-Script schreiben, aber da hat nicht jeder Lust zu, dem ich das Programm gebe. ^^ Hat da jemand eine Idee? Das Google-Orakel konnte mir leider nicht helfen... Thx im voraus. |
| | |
| | #2 (permalink) |
| Senior Member | Von welchem Desktop Environment bzw. von welchem Filemanager aus startest du das Programm? Komisch, dass die executable mit ~ als working-directory ausgeführt wird... im Grunde ist daran aber nichts falsch, dass man ein Programm aus dem richtigen Verzeichnis heraus ausführen muss. ändern könnte man das zum beispiel, indem man eine kommandozeilenoption "--datadir" hinzufügt, bei der man dann das Verzeichnis mit den Daten angeben kann. In deinem Fall hilft das allerdings auch nicht wirklich weiter. Was du allerdings machen könntest, ist folgendes (falls du in C oder C++ programmierst): in argv[0] steht der pfad zum programmbinary drin, über das das programm aufgerufen wurde, falls es also vom home-verzeichnis aus z.B. per "./Desktop/downloads/programmname/programm" gestartet wurde, steht genau dieser String in argv[0] und du kannst daraus den Teil "./Desktop/downloads/programmname/" herausfiltern und damit dann auf das programmverzeichnis (und damit auch auf die darin enthaltenen Daten) zugreifen, egal, von wo aus das Programm aufgerufen wurde. |
| | |
| HaBOT | |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Thx, das mit dem argv[0] ist generell eine gute Idee. Btw.: Ich benutze Kubuntu mit dem Filemanager Dolphin, habe es aber auch mit Nautilus probiert. Das Problem scheint aber doch ein anderes zu sein, als ich gedacht habe... Ich dachte, dass das Programm sich aufhängt, liegt daran das es die Config-Dateien nicht findet. Das tut es sonst auch immer, wenn ich es aus Eclipse heraus starte. Nun habe ich es log-Files erstellen lassen und festgestellt, dass keine Log-Files auftauchen. (also keine Fehler) Weder im Programmordner noch im Home-Verzeichnis. Aber das Programmfenster tauch einfach nicht auf, nur das Programm in der Prozessliste. Btw. funktioniert das Programm einwandfrei, wenn ich es über die Konsole starte. Das verwirrt mich... Btw.: Das ist in C++ geschrieben, mit SDL als grafischer Oberfläche. |
| | |
| | #4 (permalink) |
![]() Registriert seit: 06.01.07 ![]() Likes: 0 | Ich hab' meine Glaskugel leider gerade net hier... Du koenntest aber auch einfach mal den Teil deines Progammes hier posten, der net funktioniert. Wie soll dir jemand helfen, wenn du hier keine Informationen preis gibst? MfG - Keks |
| | |
| | #5 (permalink) | |
| Themenstarter Registriert seit: 02.01.07 ![]() Likes: 0 | Zitat:
Darum dachte ich auch, es werde im falschen Ordner ausgeführt. Edit:Hat sich erledigt. Es lag an Dolphin... Nur frage ich mich, warum es beim ersten Test mit Nautilus auch nicht geklappt hat.? Dafür fliegt Dolphin von Platte. 2 Stunden Rätseln und ein Systemabstruz wegen ca. 15 mal dem selben Hintergrundprogramm. >.> | |
| | |
| | #6 (permalink) |
| Senior Member | stellst du sicher, dass Die Logfiles auch wirklich auf die Festplatte geschrieben werden, bevor sich das Programm beendet? Es wäre schlecht, wenn das Betriebssystem die Schreibzugriffe cachen würde, und nicht mehr dazukommt, die Logs auf die Festplatte zu speichern, bevor das Programm abstürzt. Deshalb ggf. mit flush() nachhelfen. beim Ausführen von der Konsole aus: Hast du getestet, was passiert, wenn du es zwar von der Konsole aus aufrufst, aber NICHT aus dem Verzeichnis heraus, sondern von anderswo? falls es dann nicht klappt, rufe es gleich nochmal von da aus auf, aber diesmal mit einem debugger (kennst du die grundlegenden befehle von GDB?). EDIT: achso, ok |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Ordner im selben Fenster | Mithril | Windows | 51 | 08.03.11 23:45 |
| Programm/Script nach Useranmeldung öffnen/ausführen | tanj | Linux/UNIX | 5 | 18.09.08 18:57 |
| [solved] ASP.Net/C# Programm auf Webserver ausführen | Mortiis | (Web-) Design und webbasierte Sprachen | 6 | 13.07.07 10:24 |
| visual c++ Programm ausführen | Corni | Code Kitchen | 2 | 22.04.06 13:52 |
| Warnung: Sicherheitsloch im IE kann jedes Programm ausführen | Tec | (In)security allgemein | 6 | 11.03.02 09:33 |