In Cpp eine Datei öffnen und das Programm weiter laufen lassen

Moradrix

Newbie
Registriert
Jan. 2016
Beiträge
3
Moin,

ich bin neu hier im Forum und habe eine kurze Frage zu C++, die ich leider auf Anhieb nicht mit einer Google Suche oder Forendurchgestöber beantworten konnte.

Und zwar möchte ich ganz schlicht von einem C++ Programm aus eine andere Datei öffnen, wie zB eine .txt oder .jpg, was an sich ja kein Problem ist. Hier nutze ich einfach

system("test.txt");

Mein Problem ist nun, dass das C++ Programm jetzt solange pausiert, bis ich die andere Datei manuell geschlossen habe. Jedoch hätte ich es gerne, dass ich in der Konsole weiterhin agieren kann, während die .txt oder .jpg geöffnet bleibt.

Gibt es da eine simple Möglichkeit oder geht das zB aus Sicherheitsgründen nicht? (Man kann ja ganz schnell Mist verzapfen, wenn man per Console zig Dateien auf einmal öffnen ließe...)

Vielen Dank für Eure Zeit und Hilfe!

MfG

Gero
 
Einen Schritt zurück treten und dir die ganz einfache Frage stellen:

Was will ich tun?

Du willst nämlich nicht eine Datei öffnen und das Programm weiterlaufen lassen. Du willst mit den verschiedenen Dateien etwas anstellen... oder?
 
Gibt es da eine simple Möglichkeit oder geht das zB aus Sicherheitsgründen nicht? (Man kann ja ganz schnell Mist verzapfen, wenn man per Console zig Dateien auf einmal öffnen ließe...)
Grundsätzlich kannst du als Nutzer quasi alles machen, wofür du nicht gerade Systemrechte brauchst. Natürlich beinhaltet das auch jede Menge Mist.

Code:
system("test.txt");
Was soll das überhaupt machen? Normalerweise dürfte da nur eine Fehlermeldung zurückkommen, dass "test.txt" nicht gefunden wurde oder keine Ausführungsrechte hat.

Wenn du einen Prozess starten und neben deinem Programm laufen lassen willst, hängt es jetzt vom OS ab, was da genau getan werden muss (fork/exec unter Linux, CreateProcess oder sowas auf Win32). Auf jeden Fall willst du einen Prozess starten, der nicht mit deinem Programm synchronisiert wird - dafür muss man nicht zwingend einen separaten Thread innerhalb der Anwendung starten. system ist allerdings nur ein Convenience-Wrapper, der das übergebene Shell-Kommando auswertet und so lange wartet, bis du das Programm wieder beendet hast.
 
Moin,

danke erstmal für die schnellen Antworten. Ist eine ganze Weile her, dass ich mich mit dem Programmieren auseinander gesetzt habe und ich überlege derzeit, ein altes Projekt wieder aufleben zu lassen. Dabei handelt es sich um ein simples textbasiertes rpg in der Konsole. Jetzt stelle ich diverse Überlegungen an, was ich grundsätzlich ändern möchte bzw. anders angehen will. Unter anderem schaue ich, wie ich eine Karte oder einzelne Bilder von Räumen zusätzlich einbringen kann.
Daher würde ich gerne .jpg Dateien öffnen lassen, sodass diese quasi neben der Konsole (im Hintergrund) bleiben und man weiterspielen kann und parallel draufguckt. Mit dem system Befehl öffnet sich das halt alles ganz easy (wenn der richtige Pfad angegeben ist versteht sich), aber das Programm in der Konsole pausiert nunmal bis zum Schließen des Bilds :(

Threads und Ansync sagt mir leider auf Anhieb nichts, müsste ich mich dann wohl mal reinlesen. ShellExecute genauso.

Danke nochmal, vielleicht konnte ich mein Anliegen jetzt etwas verständlicher machen und es findet sich eine einfache Lösung ^^

MfG

Gero
 
die Lösung ist einfach und wurde bereits gesagt ;) Asynchrone Threads
 
Welches Betriebssystem denn?
Auf einer Linux-Konsole kann man ja einfach " &" ohne "" hinter den Befehl hängen damit der Prozess parallel läuft. Evtl funktioniert das bei deinem system(..) auch?
 
Ich arbeite schlicht mit Windows. Danke für die ANtworten, ich werde mich dann mal in Asynchrone Threads reinlesen :)
 
Zurück
Oben