Ich schreibe ein kleines Programm in Haskell, das die Befehle arecordmidi
und aplaymidi
manipuliert, um kurze Improvisationen auf meinem Digitalpiano über MIDI aufzunehmen. Ich werde den Schlüssel R drücken, mein Programm wird einen neuen Unterprozess mit dem Befehl arecordmidi
erstellen. Wenn ich erneut R drücke, möchte ich, dass meine Aufnahme beendet wird, indem ich den Befehl arecordmidi
beende.Wie man einen Subprozess in Haskell (SIGINT) beendet?
Wie kann ich den arecordmidi
Subprozess beenden? Wenn in einer Shell CTRL + C die Aufzeichnung stoppen würde. Das ist was ich will.
Ich verwende den folgenden Code der Subprozess zu erstellen:
import System.Process
main = do
let rec_command = "arecordmidi -p \"CASIO USB-MIDI\" myRecording.midi"
process <- createProcess (shell rec_command)
-- I could try the following code, but the documentation of System.Process
-- says it's bad to use terminateProcess:
let (_, _, _, processHandle) = process
terminateProcess processHandle
Ich dachte darüber nach ... Schließlich entschied ich mich für 'terminateProcess' zu verwenden, da mein kleines Programm immer noch nur ein Entwurf ist. – CamilB