Run Program ordnungsgemäß beenden ()Ich befinde mich in einer Situation, in der ich Run Program() verwende, um Dateien an eine FTP/MTP-Site zu senden. Im Großen und Ganzen funktioniert alles super, aber manchmal knickt die Verbindung und das Programm hinkt ewig. Ich habe dieses Problem über die Befehlszeile neu erstellt und es handelt sich im Grunde um ein Ereignis vom Typ "Verlorene Verbindung". Aber ich muss CMD mit Strg-Break verlassen, um es zu stoppen.
In JMP möchte ich eine Auszeit setzen, um die Risiken zu verringern, aber ich konnte keine zum Funktionieren bringen. Derzeit baue ich das Timeout in den While(!(x << isReadEof), Wait(0.1))-Befehl ein, sodass x auf 0 gesetzt wird, wodurch das Run-Programm unterbrochen wird. Aber wenn ich dies tue, friert JMP oft für kurze oder längere Zeit ein, um Hintergrundprobleme zu beheben (oder während etwas anderes behoben wird), die vor sich gegangen sind.
Gibt es eine Möglichkeit, das Schließen von Run Program() sowie des von ihm aufgerufenen Prozesses zu erzwingen, ohne das Risiko einzugehen, JMP einzufrieren?
Vielen Dank!
Betreff: Run Program ordnungsgemäß beenden ()Danke für die Idee @Craige_Hales ! Ich hatte vorher <
Wenn ich eine solide Sache finde, die funktioniert, werde ich sie hier posten, aber ich werde auf jeden Fall einige Ihrer Ideen ausprobieren!
Betreff: Run Program ordnungsgemäß beenden ()Versuchen Sie es mit rp < die entsprechenden Befehle quit oder exit an das FTP-Programm, gefolgt von rp < . (Obwohl, wie Sie sagen, das FTP-Programm alles zu ignorieren scheint, während die verlorene Verbindung hängt.)
Wenn die JMP-Variable, die das RunProgram-Objekt (in meinen Beispielen rp) enthält, durch die JMP-Beendigung überschrieben oder zerstört wird, wartet sie auf die Beendigung des FTP-Programms. Ich glaube nicht, dass es eine Möglichkeit gibt, den Strg-Break über die FTP-Stdin zu senden.
Ich denke, dass der unterbrochene Verbindungsabbruch standardmäßig bis zu 10 Minuten dauern kann und möglicherweise konfigurierbar ist. Ich bin mir nicht sicher, ob das am FTP-Programm oder an einer Windows-Registrierungseinstellung liegt. Für meinen Test schien es ungefähr 1 Minute zu hängen.
Alle meine Experimente wurden mit dem eingebauten Windows-FTP-Client durchgeführt. Es gibt wahrscheinlich andere Clients, die möglicherweise andere Funktionen haben.