我想使用node.js启动/停止第二个应用程序
我在目录中有以下2个nodejs应用程序:
--app.js
|
-app2.js
内部app.js
serverProcess = spawn('node', ['app2.js']);
process.stdin.pipe(serverProcess.stdin);
serverProcess.stdout.on('data', data => {
console.log(`child stdout:\n${data}`);
});
setTimeout(function() {
console.log('kill');
serverProcess.stdin.pause();
serverProcess.kill();
}, 5000);
内部app2.js
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
我想做的是运行app.js,它将app2.js运行5秒钟,将输出记录到stdout,这样我就可以看到它,然后终止该过程。
当前,app2.js
被杀死,但是app.js
仍在运行,并且没有终止。
我该如何更正我的代码,以便app.js
一被杀死就终止?
答案 0 :(得分:1)
app.js
被杀死时,app2.js
不会退出,因为由于以下原因,它会监听stdio
流的输入:
process.stdin.pipe(serverProcess.stdin);
在process.stdin.pause()
之后,您必须写serverProcess
(不是 console.log('kill')
)。
或者完全删除process.stdin.pipe(serverProcess.stdin)
,因为您不使用通过stdin
获得的输入。