2017-08-04 38 views
0

我有一个REST服务,它具有POST方法,该方法执行psexec命令,该命令在远程桌面上启动不同的进程(取决于POST数据),并等待它们终止(psexec是正在运行而没有-d标志)。如果该过程花费超过5分钟运行(我遇到的问题需要大约5分钟),则psexec命令正在第二次执行,因此我的进程正在启动两次,它的前一个实例将作为我从一个cmd.exe实例启动它并运行一个新实例。如果我运行psexec命令,并且-d标志不等待进程终止,则该进程只能正常运行一次。什么导致了这个问题?它是psexec命令还是REST服务的问题(REST是使用Express在Node.js中编写的)。这只会发生,如果我从Web界面(浏览器)调用REST服务,如果我直接从服务器调用它,它正在正确运行。从REST调用psexec会迫使它运行两次

回答

0

要运行psexec,我用child_process module及其exec function

产生一个壳然后该壳体内执行该命令。

timeout选项,默认为0

我解决我的问题,通过改变child_process.exec()child_process.execSync()

的不同之处在于方法不会返回,直到子进程 已经完全关闭。当遇到timeout且发送了killSignal时,该方法将不会返回,直到进程完全退出。

timeout选项默认为undefined

同步方法阻塞Node.js事件循环,暂停执行任何其他代码,直到生成的进程退出。

相关问题