1.pid文件的內容
用cat命令查看,能夠看到內容只有一行,記錄了該進程的IDspa
2.pid文件的做用
防止啓動多個進程副本code
3.pid文件的原理
進程運行後會給.pid文件加一個文件鎖,只有得到該鎖的進程纔有寫入權限(F_WRLCK),把自身的pid寫入該文件中。
其餘試圖得到該鎖的進程會自動退出。blog
代碼示例以下:繼承
lock.l_type=F_WRLCK; lock.l_whence=SEEK_SET; if(fcntl(fs,F_SETLK,&lock)<0){ //鎖定不成功,退出 } sprintf(buf,"%d\n",(int)pid); pidsize=strlen(buf); if)(tmp=write(fs,buf,pidsize))!=(int)pidsize){ //寫入不成功,退出 }
4.注意事項
1)進程退出,該進程加的鎖自動失效
2)進程關閉了該文件描述符,加的鎖失效
3)鎖的狀態不會被子進程繼承,進程關閉則鎖失效,無論子進程是否在運行進程