2017-08-04 37 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事件循環,暫停執行任何其他代碼,直到生成的進程退出。

相關問題