我正在尝试使用Daemon::Generic,它似乎正是我需要的,除了在Solaris上似乎锁定pid文件不起作用。结果,status
总是报告该过程已经死亡,即使它已经非常活跃。
例如,以下内容:
use Daemon::Generic;
sub gd_run
{
sleep (60);
}
sub gd_preconfig
{
return ();
}
newdaemon(pidfile => "/tmp/myproc.pid");
...总是报告过程已经死亡。
请注意,/tmp
是在本地安装的,所以看起来应该避免网络驱动器锁定问题。
任何想法如何让这个工作?
修改
经过仔细调查,将sleep 60
命令放在Generic.pm
的不同位置,似乎锁定在函数gd_daemonize
的某处丢失了。 Solaris上的锁不能生存吗?有没有办法确保锁定能够在daemonize
进程中存活?