DOSbox mit Terminal öffnen und wieder schließen

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Hallo Community,
ich habe zwar nur ein kleines Problem, aber das versaut mir meinen Tag ganz gewaltig. Ich hoffe, ihr könnt mir helfen?!?

Ich schreibe gerade einen Matlab code und in einer Schleife öffne ich die DOSbox und ein auszuführendes Programm via Terminalbefehl. Nach Ausführung des Programms soll die wieder Dosbox automatisch geschlossen werden.
Folgenden Befehl benutze ich beim Terminal:

open -a DosBox.app ./SYNTH.EXE -exit

Der Befehl funktioniert unter Linux (Konsole), nicht aber bei meinem Mac (Terminal).
Falls mir jemand weiterhelfen kann, wäre das super?!?

Vielen Dank im Voraus.
Der Grünschnabel
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Wenn das "-exit" ein Argument sein soll, das für die Dosbox bestimmt ist, versuch das:
Code:
open -a DosBox.app Meine.exe --args -exit
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Hallo Rastafari,
vielen Dank für Deine schnelle Antwort. Ich habe deinen Befehl getestet.
Die Dosbox wird geöffnet aber das Programm (Meine.exe) wird nicht ausgeführt, auch wird die Dos box nicht automatisch geschlossen.
Hast Du weitere Ideen?!?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ohne Dosbox eine Vermutung: Der Name der Exe wird auch schon als Argument gebraucht.
Tip: Auf diese Weise gestartete Programme kennen den aktuellen Pfad der Terminalsitzung nicht (bzw starten selbst in '/' ) ---> absolute Pfade benutzen.
Code:
open -a DosBox.app --args /pfad/zu/Meine.exe -exit
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Vielen Dank für den Tipp.
Ich habe den Pfad mit übernommen, dennoch wird das Programm nicht gestartet oder die DOSBox automatisch geschlossen.
Also, keine Veränderung. Hmm..?!?
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Bis jetzt habe ich (wie schon oben erwähnt) die Dosbox und das Programm mit dem Befehl
Code:
open -a DosBox.app ./SYNTH.EXE -exit
geöffnet und ausgeführt.Dies funktioniert auch ohne Probleme, nur muss ich es immer "von Hand" schließen.

Ich habe versucht mit "kill" zu arbeiten, aber dann kann ich das Programm beim nächsten Schleifendurchgang nicht mehr öffnen.

Prinzipiell sieht das ganze so aus in Matlab:
Code:
for i = 1: 10
     ...
     unix(open -a DosBox.app ./SYNTH.EXE -exit)     % DOSBox wird erfolgreich gestartet und Programm ausgeführt. Prima.
     ...
     unix (kill PID(DosBox.app)                                     % kill schließt DOSBox (funktioniert) aber ich bekomme Probleme beim Öffnen des nächsten Schleifendurchgangs 
end

Ich hoffe, dass mein prinzipielles vorgehen verstanden werden konnte.

Vielen Dank...
Der Grünschnabel
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Probiere mal
Code:
open -a DosBox.app ./SYNTH.EXE --args -exit
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ööhmm...
Ich muss dich hier mal bremsen. Mit Druck auf dem Pedal. Holzweg-Alarm.
Ich kenne Matlab nicht, und demzufolge auch nicht seine verwendete Skriptsprache.
Aber nach dem was ich hier sehe bezweifle ich sehr stark, dass in dessen Skriptsprache der Aufruf "unix( ... )" wirklich dazu dient, eine Shell bzw ein Kommandozeilenprogramm zu starten. Das sieht mehr danach aus, als könntest du hiermit einen SysCall absetzen - was zwei *vollkommen* verschiedene Dinge sind.
Klären bitte, was dieses "unix()" wirklich tun kann/soll/darf.
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Hallo,
so, ich habe Matlab gecheckt und unix(command) und/oder system(command) führen jeweils das command (in meinem Fall):
Code:
open -a DosBox.app -/SYNTH.EXE --args -exit
aus aber wie schon oben erwähnt geschieht folgendes:
- Dosbox wird geöffnet
- Programm SYNTH.EXE startet nicht
- Dosbox wird nicht geschlossen.

Sorry... :(
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Ich bezweifle das.
Ein derart (wie oben geschrieben) ausgeführtes "kill" zB hat nicht die leiseste Chance was anderes als eine Fehlermeldung zu erzeugen.
Da mag was lustiges geschehen, eine Ausführung des CLI-Launchers "/usr/bin/open" halte ich für ausgeschlossen. Würde mich ohnehin wundern wenns unter Linux sowas inzwischen überhaupt geben sollte.
Anders gesagt: Das "open" im Matlab-Skript hat nicht die gleiche Bedeutung wie das "open" im Terminal. Nur eine verwirrende Namensgleichheit.
Zeig doch mal an einer Beispielzeile aus der Matlab-Doku, wie dieser Befehl dort sinnvoll einzusetzen sei. Irgendwas.
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Vielen Dank für deine ehrliche Meinung. Aber es ist folgendermaßen.
In Matlab wird eine String erzeugt:
Code:
command = ['open -a DosBox.app -/SYNTH.EXE --args -exit']
und dieser String (open -a Dos box,app -/SYNTH.EXE --args -exit) wird dann durch den Befehl:
Code:
system (command)
an den Terminal übergeben und dort ausgeführt.
Durch die Verwendung von system (command) wird also "einfach nur der String an den Terminal übergeben und dort ausgeführt.
Unter folgendem Link ist der system (command) Befehl nachzuvollziehen:
http://www.mathworks.de/de/help/matlab/ref/system.html

Vielen Dank für deinen Ehrgeiz...

Der Grünschnabel aus Japan
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Na, dann sieh doch man bei DosBox nach, ob das Prog überhaupt solche Argumente entgegennehmen will - oder mit welcher Option das evtl zu geschehen hat. (Benutze ich nämlich genauso wenig)
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Hallo,
so, ich habe Matlab gecheckt und unix(command) und/oder system(command) führen jeweils das command (in meinem Fall):
Code:
open -a DosBox.app -/SYNTH.EXE --args -exit
aus aber wie schon oben erwähnt geschieht folgendes:
- Dosbox wird geöffnet
- Programm SYNTH.EXE startet nicht
- Dosbox wird nicht geschlossen.
Hmm, in Beitrag #6 schreibst du noch, dass nur das beenden nicht funktioniert. Was denn jetzt?
 

Grünschnabel1981

Golden Delicious
Registriert
22.03.14
Beiträge
7
Hallo Zusammen,
mein Problem besteht weiterhin, daher möchte ich darauf noch einmal zurück kommen.

Eine Software (SYNTH.EXE) soll mit Hilfe der Dosbox ausgeführt und im Anschluss soll die Dos box automatisch geschlossen werden.

Unter Linux gebe ich in der Konsole folgenden Befehl ein:
Code:
dosbox SYNTH.EXE -exit
Folgendes geschieht:
- Die Dosbox öffnet automatisch,
- die Software SYNTH.EXE startet automatisch
- die Dosbox wird nach Beendigung automatisch geschlossen.
Dieser Befehl macht genau das, was ich möchte!!! Es scheint unter Linux zu funktionieren.

Jetzt versuche ich das ganze in meinem Mac. Folgendes Befehl gebe ich im Terminal ein:
Code:
open -a Dosbox.app ./SYNTH.EXE
Folgendes geschieht:
-Die Dosbox öffnet automatisch,
- die Software SYNTH.EXE startet automatisch,
- die Dosbox wird NICHT geschlossen.

Nächster Versuch:
Code:
open -a Dosbox.app ./SYNTH.EXE --args -exit
Folgendes geschieht:
-Die Dosbox öffnet automatisch,
- die Software SYNTH.EXE startet NICHT,
- die Dosbox wird NICHT geschlossen.

Habt ihr eine Idee wie ich mein Problem im Terminal lösen kann???

Im Anschluss würde ich das ganze gerne in Matlab einbinden und mit einem System()-Befehl ausführen. Aber zunächst muss ich den richtigen Mac-Befehl für den Terminal heraus bekommen. :(

Beste Grüße und vielen Dank im Voraus
Der Grünschnabel
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Oder was ist wenn du dosbox von brew installieren lässt?

Code:
brew install dosbox

Dann kannst du es mal versuchen mit dem Kommando wie du es von Linux kennst. Vielleicht funktioniert das?