有时我想退出NodeJS脚本并将终端的所有控制权移交给另一个程序,就像Bash的exec
命令一样。下面使用简单的t.sh:
#!/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.spawn
和child_process.exec
以及process.exit
。除非我遗漏了某些内容,否则这些内容似乎无法执行经典的Bash exec
。救命啊!