問題タブ [external-process]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pythonで外部プログラムの複数のインスタンスを実行および監視する
メインプログラムは次のようなものです。
起動した子プロセスの各インスタンスを監視するメインプログラムを作成し、実行されていない場合は対応するパラメータで再起動する方法。
メインプロセス内にマルチスレッドアーキテクトを実装する代わりに、子プロセスの複数のインスタンスを実行し続ける目的は、可能な限り多くのCPUとデータベースのスループットを利用することです。
c++ - 外部プロセスでファイルが作成されたときにファイルが確実にフラッシュされるようにする(Win32)
ファイルアクティビティをディスクにフラッシュすることに関するWindowsWin32C++の質問。
ファイルを作成する外部アプリケーション(CreateProcessを使用して実行)があります。つまり、返されるときに、いくつかのコンテンツを含むファイルが作成されます。
続行する前に、プロセスで作成されたファイルが実際にディスクにフラッシュされたことを確認するにはどうすればよいですか?
これは、C ++バッファではなく、実際にディスクをフラッシュすることを意味します(FlushFileBuffersなど)。
私はファイルHANDLEにアクセスできないことを忘れないでください。もちろん、これはすべて外部プロセス内に隠されています。
私は自分のハンドルをファイルに開いてからFlushFileBuffersを使用できると思いますが、これが機能するかどうかは明らかではありません(私のハンドルには実際にフラッシュが必要なものが含まれていないため)。
最後に、これを管理者以外のユーザースペースで実行して、ボリューム全体でFlushFileBuffersを使用できないようにします。
何か案は?
更新:なぜこれが問題だと思うのですか?
私はデータバックアップアプリケーションに取り組んでいます。基本的に、説明されているようにいくつかのファイルを作成する必要があります。次に、内部DBを更新する必要があります(SQLite組み込みDBを使用)。
最近、ブルースクリーン中にデータ破損の問題が発生しました(原因はアプリとは関係ありませんでした)。
私が懸念しているのは、システムクラッシュ時のアプリケーションの整合性です。そして、はい、このアプリはデータバックアップアプリなので、私はこれを気にします。
私が懸念しているユースケースは次のとおりです。
- 小さなデータファイルは、外部プロセスを使用して作成されます。この書き込みは、OSキャッシュでディスクへの書き込みを待機しています。
- DBを更新してコミットします。これはディスクアクティビティです。この書き込みもOSキャッシュで待機しています。
- システム障害が発生します。
私が見ているように、私たちは今、潜在的な競合状態にあります。「1」がフラッシュされ、「2」がフラッシュされない場合は、問題ありません(DBトランザクションがコミットされていないため)。どちらもフラッシュされないか、両方がフラッシュされる場合は、問題ありません。
私が理解しているように、書き込みは非決定論的です。つまり、OSが「2」の前に「1」を書き込むことを保証することを私は知りません。(私が間違っている?)
したがって、「2」がフラッシュされても「1」がフラッシュされない場合は、問題が発生します。
私が観察したのは、DBが正しく更新されたが、ファイルにガベージが含まれていることでした。データの最後の3分の2はバイナリの「ゼロ」でした。さて、ブルースクリーン時にファイル部分をフラッシュしたときの様子はわかりませんが、そのように見えても驚かないでしょう。
これが原因であることを保証できますか?いいえ、これを保証することはできません。私はただ推測しています。ディスク障害またはブルースクリーンの結果として、ファイルが「自然に」破損した可能性があります。
パフォーマンスに関しては、これは私が対処できると私が信じていることです。
たとえば、SQLiteのデフォルトの動作では、トランザクションをコミットするたびに(FlushFileBuffersを使用して)完全なファイルフラッシュを実行します。これを行わないと、システムクラッシュ時に、DBが破損している可能性があることは明らかです。
また、「チェックポイント」でフラッシュするだけで、パフォーマンスの低下を軽減できると思います。たとえば、50個のファイルを書き込み、ロットをフラッシュしてからDBに書き込みます。
これがすべて問題になる可能性はどのくらいありますか?私を殴る。しかし、私のアプリはシステム障害時またはその前後にアーカイブされている可能性があるため、あなたが考える可能性が高くなります。
それが私がこれをしたくない理由を説明することを願っています。
mips - Reading in MIPS external file so another file can use it?
Hey all, I'm working on this final thing for my MIPS project and it's deceptively easy. I need to get a procedure (called feed) and let its main driver program use it by reading it in. I know that I'm supposed to use the call code 14 and .globl sym (I think) in order to feed it into the file and have it read it. I just need a basic tutorial or something, as I CANNOT find it on the Internet or in my book (just lists the call code, real helpful). Here's what I know:
I need to use read, but I also need a file descriptor (don't know where to get it). I need to put the buffer in $a1 and the length in $a2.
Well, that's about it. If there's any decent tutorial you could whip up or if there is one online that I don't see let me know please :). I just need a push in the right direction, I'm sure it can't be too difficult, just can't find any info on it!
vb.net - vb.netからモーダルポップアップを閉じますか?
別のアプリケーションからのモーダルフォーム(ポップアップ)が表示されたらすぐに閉じます。これをVB.NETから実行したいのですが、C#での提案は簡単に翻訳できるはずです。
モーダルポップアップのキャプションは長くてユニークなので、アプリでハードコーディングできます。私がやりたいのは、ユーザーがフォームの閉じる( "X")ボタンをクリックするか、フォームのデフォルトのタブオーダー0ボタンをクリックすることをシミュレートすることです。どちらでも動作します。
タイトルバーのキャプション以外に、モーダルポップアップに関する詳細情報が必要な場合がありますか?いずれにせよ、そのモーダルフォームの一意の識別子として使用しても安全です。また、ポップアップを閉じる最初のイベントが発生するとすぐに、そのコードでチェックを終了する必要があります。
些細なことだと思いますが、すぐにわかる情報はありません。Microsoftは、 EndDialog()の代わりにDestroyWindow(WM_CLOSE
)を呼び出すため、モーダルポップアップに送信するべきではないと言っていますが、正直なところ、「ウィンドウ」への「送信」が何を意味するのかさえわかりません= /WM_CLOSE
少し教祖を共有してくれてありがとう!:D
PS:これはAutoHotkeyでは些細なことかもしれません。私はそれを知らずに足が不自由に感じます、私はそれが必要であることを知っています。
perl - PerlのDOSからディレクトリリストを取得するにはどうすればよいですか?
実行時引数としてPerlスクリプトに渡されたパスからディレクトリ名を取得する必要があります。これが私が使用しているコードです:
ただし、このPerlスクリプトを実行しているディレクトリ内のディレクトリ名が返されます。つまり、このPerlスクリプトにパスが渡されるターゲットディレクトリからディレクトリ名を取得するにはどうすればよいですか?
php - ファイル名にスペースを入れて配列を渡すことにより、外部コマンドを実行します
名前にスペースが含まれているファイルで動作するプログラムを実行する必要があるPHPスクリプトがあります。外部コマンド(例exec()
)を実行するためのほとんどのPHP関数は、コマンドラインを実行するために1文字列の引数を取ります。ただしescapeshellarg()
、入力を安全にするなどのことを行う必要があります。
配列を使用してPHPで外部コマンドを実行する方法はありますか?ではなく:
私は行くことができます:
これは、私が議論を逃れることを心配する必要がないことを意味します。escapeshellarg()
私が使用しているバージョンには非ASCII文字を削除するバグがあるため、の使用は避けたいと思います。
Javaにはこの機能がありますhttp://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#exec%28java.lang.String[]%29
windows - バッククォートを介した eventmachine および外部スクリプト
外部スクリプト/コマンドを呼び出す必要がある eventmachine を使用して記述した小さな HTTP サーバー スクリプトがあり、バッククォート ( ``
) を介して呼び出します。バックティックされたコードを実行しないリクエストを提供する場合、すべて問題ありませんが、EM コードがバックティックされた外部スクリプトを実行するとすぐに、リクエストの提供を停止し、一般的に実行を停止します。
eventmachine はサブプロセスやスレッドに敏感で、popen
この目的のためのメソッドを持っているように見えますが、EM のソースは、このメソッドは Windows では機能しないと警告しています。このスクリプトを実行しているマシンの多くは Windows を実行しているため、popen
.
私はここで運が悪いのでしょうか?Windows で eventmachine スクリプトから外部コマンドを実行する安全な方法はありますか? EM の実行をブロックせずに、外部で実行するコマンドを起動する方法はありますか?
編集: EMを最も台無しにしているように見える犯人は、次のように、Windowsstart
コマンドの私の使用法ですstart java myclass
。start を使用する理由は、これらの外部スクリプトの実行を開始し、EM リクエストが処理された後も実行を継続するためです。
perl - Perl から外部プロセスに引数を渡すにはどうすればよいですか?
さまざまなパラメーターで実行してさまざまな出力を生成するアプリケーション実行可能ファイルがあります。スクリプトのコマンド ライン パラメータからこれにいくつかのパラメータを指定したいのですが、その他はスクリプトに対してローカルになります。使用法:
上記のコードで本質的に間違ったことをしていますが、それを理解することができませんでした:-(
java - Tomcatが強制終了されたときにRuntime.execによって起動されたアプリケーションが終了することを確認します
次の呼び出しを介していくつかの外部プロセスを起動します
java.concurent.Futureを使用して、アプリケーションの正しい起動と実行を監視します。アプリが誤って起動され、停止されたかどうかがわかります。やめられます。
しかし、メインアプリケーション(他のアプリケーションを起動するアプリケーション)を強制終了すると、子アプリケーションのいくつかのプロセスが実行され続け、それらを制御できなくなります。
マザーアプリケーションが停止/強制終了/エラーになったときに、すべての子プロセスも強制終了されるようにする方法を探しています。
私がすでにしたこと:
メインアプリケーションはtomcatで実行されるので、コンテキストの破棄をリッスンし、すべてのサブプロセスを強制終了します。しかし、それだけでは十分ではありません。Tomcatを停止または強制終了すると、機能しなくなります。
java - パイプされたアプリのコンソールテキストを別のアプリにキャプチャする
タイトルがかなり紛らわしい場合は申し訳ありませんが、Javaで別のアプリにパイプされているアプリの標準出力を取得できるかどうか疑問に思っています。
これがコマンドラインです。
これがbashで実行される場合、これは出力です。
最後の行は、ユーザーがSIGINTを送信するまで、soxによって更新されます。
問題は、Javaでは、そのプロセスからのInputStreamがデータを生成しないことです。しかし、soxの配管を省略してラメにするとsox -d -t wav test.wav
、InputStreamはデータを取得します。私の質問は、コンソールアウトに何が起こったのかということです。どうすればアクセスできますか。