启动一个守护进程的唯一副本

守护进程有许多方法可以防止自身的另一个副本启动,在本小节中,示例代码采用了对文件加锁的操作来保证系统中守护进程的唯一性。

守护进程启动后创建或打开已有的特定文件,并通过 fcntl() 函数获取整个文件的写锁,然后 ftruncate() 将文件截断为零,并写入当前进程 PID 号;若 fcntl() 函数获取写锁失败,则意味着已存在一个守护进程在运行了。

这种方法的优势在于若守护进程异常退出了,操作系统内核就会自动释放其获取的写锁,以便再起一个新的守护进程。

Advertisements

1 reply

  1. 很不错的思路,个人觉得可以再加一些:在启动守护进程的同时启动另外一个看护守护进程的进程,尝试获得该文件的读写锁,这个进程就会被挂起,当守护进程down掉之后这个进程自动接管,如此往复,不知是否可行。

桂小方 发表评论 取消回复

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理