2017-08-04 10 views
0

psexecコマンドを実行し、リモートデスクトップの異なるプロセス(POSTデータに応じて)を開始するRESTサービスがあり、終了するのを待ちます(psexec is -dフラグなしで実行されます)。プロセスの実行に5分以上かかる場合(問題の発生に5分かかる)、psexecコマンドが2回実行されるため、プロセスが2回起動され、以前のインスタンスが私はcmd.exeインスタンスから起動し、新しいインスタンスが実行されます。プロセスが終了するのを待たずに-dフラグのpsexecコマンドを実行すると、プロセスは1回だけ正しく実行されます。この問題の原因は何ですか? psexecコマンドか、RESTサービスの問題です(RESTはExpressを使用してNode.jsに書き込まれます)。これは、Webインターフェイス(ブラウザ)からRESTサービスを呼び出す場合にのみ発生します。サーバーから直接呼び出すと、正しく実行されています。 psexecを実行するにはRESTからpsexecを呼び出すと、2回実行されます

答えて

0

、私はchild_process moduleを使用していたし、そのexec function

こと、そのシェル内のコマンドを実行シェルを起動します。

それは0

デフォルトは、私が

方法は、子プロセスまで戻りませんという例外が異なる点child_process.execSync()child_process.exec()を変更することで、私の問題を解決することを timeoutオプションがあります完全に閉じた。 timeoutに遭遇し、killSignalが送信された場合、プロセスは完全に終了するまで戻りません。

timeoutのデフォルト値はundefinedです。

同期メソッドは、生成されたプロセスが終了するまで、追加のコードの実行を一時停止するNode.jsイベントループをブロックします。

関連する問題