1.pid文件的內容
用cat命令查看,可以看到內容只有一行,記錄了該進程的ID
2.pid文件的作用
防止啟動多個進程副本
3.pid文件的原理
進程運行后會給.pid文件加一個文件鎖,只有獲得該鎖的進程才有寫入權限(F_WRLCK),把自身的pid寫入該文件中。
其他試圖獲得該鎖的進程會自動退出。
代碼示例如下:
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)鎖的狀態不會被子進程繼承,進程關閉則鎖失效,不管子進程是否在運行