Hackerboard WikiHaboBlog

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

[c++/Linux] Programm im selben Ordner ausführen

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 ...

Antwort
Alt 03.02.09, 18:17   #1 (permalink)
 
Benutzerbild von Extinction
 
Registriert seit: 02.01.07
Extinction Leistung: Facit NTK
Likes: 0
Standard [c++/Linux] Programm im selben Ordner ausführen


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.

Extinction ist offline   Mit Zitat antworten
Alt 03.02.09, 18:40   #2 (permalink)
Senior Member
 
Registriert seit: 29.07.05
Heinzelotto Leistung: Facit NTK
Heinzelotto eine Nachricht über ICQ schicken
Likes: 0
Standard

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.
Heinzelotto ist offline   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 03.02.09, 19:04   #3 (permalink)
Themenstarter
 
Benutzerbild von Extinction
 
Registriert seit: 02.01.07
Extinction Leistung: Facit NTK
Likes: 0
Standard

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.
Extinction ist offline   Mit Zitat antworten
Alt 03.02.09, 19:11   #4 (permalink)
 
Registriert seit: 06.01.07
keksinat0r Leistung: Facit NTK
Likes: 0
Standard

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
keksinat0r ist offline   Mit Zitat antworten
Alt 03.02.09, 19:44   #5 (permalink)
Themenstarter
 
Benutzerbild von Extinction
 
Registriert seit: 02.01.07
Extinction Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Du koenntest aber auch einfach mal den Teil deines Progammes hier posten, der net funktioniert.
Das ist doch das Problem: Ich habe keine Ahnung, warum sich nichts öffnet. Denn wenn ich es anders als mit Doppelklick öffne, funktioniert es ja. Sprich über die Konsole und aus der Eclipse GUI. Auch die Windows-Portierung läuft einwandfrei per Doppelklick und Konsole.
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. >.>
Extinction ist offline   Mit Zitat antworten
Alt 03.02.09, 20:07   #6 (permalink)
Senior Member
 
Registriert seit: 29.07.05
Heinzelotto Leistung: Facit NTK
Heinzelotto eine Nachricht über ICQ schicken
Likes: 0
Standard

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
Heinzelotto ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » [c++/Linux] Programm im selben Ordner ausführen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ä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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61