Run Program()を正常終了するFTP / MTPサイトにファイルを送信するためにRun Program()を使用しています。概してすべてがうまく機能しますが、時々接続に不自然さがあり、プログラムが無期限に遅れます。私はコマンドラインからこの問題を再現しました、そしてそれは基本的に失われた接続タイプイベントです。しかし、それを止めるにはCtrlキーを押しながらCMDから抜け出す必要があります。
JMPでは、リスクを減らすためにタイムアウトを設定したいのですが、うまく機能させることができませんでした。現在のところ、タイムアウトをWhile(!(x << isReadEof)、Wait(0.1))コマンドに組み込んで、xが0に設定されるようにし、Run Programを壊します。しかし、私がこれをした時、JMPはしばしば、(あるいは他の何かが修正されている間に)進行していた背景のものを修正するために短期または長期にわたってフリーズするでしょう。
JMPをフリーズさせる危険性なしに、強制的にRun Program()およびそれが呼び出したプロセスを強制する方法はありますか?
ありがとうございます。
正常に終了しました。Run Program()RPをお試しください <<書く FTPプログラムに対する適切なquitまたはexitコマンド、それに続くrp << writeEOF 。(あなたが言うように、接続が失われている間、FTPプログラムはすべてを無視するように見えますが)
RunProgramオブジェクトを保持しているJMP変数(この例ではrp)がJMPの終了によって上書きまたは破棄されると、ftpプログラムの終了を待ちます。私はFTP標準入力を通してctrl-breakを送る方法があるとは思わない。
失われた接続のハングアップは、デフォルトでは10分ほどかかり、設定可能な場合があります。それがFTPプログラムにあるのか、それともWindowsレジストリ設定にあるのか私にはわかりません。私のテストでは、それは約1分ハングしたようです。
私の実験はすべて、組み込みのWindows FTPクライアントを使って行われました。おそらく他のクライアントが異なる機能を持っているかもしれません。
正常に終了しました。Run Program()アイデアをありがとう @Craige_Hales !私は<< write "bye"を試したことがありますが、<< writeEoFを使わずに... だから多分それは違いを生むだろう。私は他のFTPクライアントを考えていましたが、このスクリプトは私がFTPクライアントの部分を制御することができないより大きなユーザベースにわたって使われるでしょう。
うまくいくようなしっかりしたものを見つけたら、ここに投稿しますが、あなたのアイデアを試してみます。