Linux进程间通信(IPC):信号、管道与FIFO的使用指南
利用信号进行IPC:为守护进程构建客户端
当守护进程被终止后,再次运行控制程序时,会提示无法打开PID文件,表明守护进程未在运行。例如:
$> ./my-daemon-ctl
Can't open PID-file (daemon isn't running?): No such file
or directory
其工作原理如下:
1. PID文件的作用 :守护进程在运行时会创建一个PID文件,我们可以通过该文件获取守护进程的PID。当守护进程终止时,会移除这个PID文件。所以,如果没有PID文件,就可以认为守护进程没有在运行。
2. 验证PID对应的进程 :
- 若PID文件存在,首先从文件中读取PID。
- 利用这个PID构建 /proc
文件系统中对应进程的 cmdline
文件路径。在Linux系统中,每个进程在 /proc
文件系统中都有一个对应的目录,目录内有一个名为 cmdline
的文件,包含了该进程的完整命令行信息。例如,若守护进程从当前目录启动, cmdline
文件内容为 ./my-daemon-v2
;若从 /usr/local/sbin/my-daemon-v2
启动,则包含完整路径。