在我只希望一次运行一个应用程序实例的情况下,我如何检测并阻止代码库运行两次?
目前,我的代码是从命令行启动的,我打算在应用程序运行并发出命令时,将消息发送到预先存在的实例
答案 0 :(得分:1)
正如评论中所提到的,阻止创建同一进程的一种方法是创建lock
文件。此文件通常不包含任何内容,但您可以在其中放置任何内容。我们只需要知道该文件是否存在。
const fs = require('fs')
const path = require('path')
// Create the path to the lock file
const lockFile = path.join(__dirname, './lock')
// Test the lock file
const lock = fs.statSync(lockFile)
if (lock.isFile()) {
// The file already exists, exit the process
process.exit()
} else {
// The file does not exist, let's create it
fs.writeFileSync(lockFile, '')
// Before the application quits, remove the lock file
process.on('beforeExit', () => fs.unlinkSync(lockFile))
}
锁定文件的缺点是,如果您的应用程序崩溃,lock
文件将不会被删除,并且需要手动删除。
注意: process.on()
需要位于else
,否则退出的应用程序可能会删除该文件。