2017-07-27 48 views
0

有些時候我想退出一個NodeJS腳本並將終端的所有控制交給另一個程序,就像Bash的exec命令一樣。這種行爲如下所示使用簡單t.sh:是否存在與Bash exec相當的Node JS?

#!/bin/bash 
sleep 5; exec /usr/bin/vlc 

我們可以開始t.sh然後按CTRL-Z暫停過程中,檢查PID:

ps -elf |grep t.sh |grep -v grep |awk '{print $4}' # prints 10554 

然後我們就可以恢復過程使用fg,在VLC啓動後,再次按ctrl-z並檢查VLC的PID:

ps -elf |grep vlc |grep -v grep |awk '{print $4}' # prints 10554 

我們可以看到VLC已經使用PID代替了t.sh。我非常想要與Node JS相同的行爲,但我還沒有發現它的魔力。

像這樣的東西將是完美的:process.exit('/usr/bin/vlc');當然,這是行不通的。我已經以其他身份使用child_process.spawnchild_process.execprocess.exit。除非我錯過了一些東西,否則這些東西似乎無法做到經典的Bash exec。幫幫我!

回答

1

節點沒有對必要API的任何內置訪問權限(因爲它們不能移植到Windows),但有幾個包提供本地綁定:execpenative-exec

+0

謝謝,喬希! 「不能在Windows上工作」不是一個交易斷路器,因爲該應用永遠不會部署到該環境。在其他情況下,exec允許提供一個權宜之計解決方案,讓我有時間將bash shell腳本遷移到NodeJS。 –

+0

native-exec和execpe都從https://github.com/jprichardson/node-kexec出現。雖然native-exec更受歡迎,但execpe看起來更有能力。 –