pid文件作用浅析

3288阅读 0评论2013-01-07 sometimeixpub
分类:LINUX

(1) pid文件的内容:pid文件为文本文件,内容只有一行, 记录了该进程的ID。 
用cat命令可以看到。 
(2) pid文件的作用:防止进程启动多个副本。只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。 

(3) 编程技巧: 
    调用fcntl设置pid文件的锁定F_SETLK状态,其中锁定的标志位F_WRLCK。 
    如果成功锁定,则写入进程当前PID,进程继续往下执行。 
    如果锁定不成功,说明已经有同样的进程在运行了,当前进程结束退出。 

  1 lock.l_type = F_WRLCK;
  2 lock.l_whence = SEEK_SET;
  3 if (fcntl(fd, F_SETLK, &lock) < 0)
  4 {
  5         //锁定不成功
  6 }  
  7 sprintf (buf, "%d\n", (int) pid);
  8 pidsize = strlen(buf);
  9 if ((tmp = write (fd, buf, pidsize)) != (int)pidsize)
 10 {
 11         //写入不成功
 12 }  
 13 


(4) 一些注意事项: 
    i) 如果进程退出,则该进程加的锁自动失效。 
    ii) 如果进程关闭了该文件描述符fd, 则加的锁失效。(整个进程运行期间不能关闭此文件描述符
    iii) 锁的状态不会被子进程继承。如果进程关闭则锁失效而不管子进程是否在运行
上一篇:egrep
下一篇:RAC启动与停止的先后顺序小结