要和一个守护进程通信,你要向它发送信号,让它以某种方式相应。
例如:强行要求一个守护进程重新读取它的配置文件,或者改变守护进程的行为,或者指示守护进程结束运行。
使用信号与守护进程通信。
守护进程中添加信号捕捉函数
void catch_Signal(int Sign)
{
switch(Sign)
{
case SIGTERM:
exit(EXIT_SUCCESS);
}
}
通过shell脚本结束守护进程。
#!/bin/sh
WHOAMI=`whoami`
PID=`ps -u $WHOAMI | grep abc | awk '{print $1}'`
if (test "$PID" != "") then
kill $PID
fi
注意:脚本文件的名称不要有‘abc’字样,不然执行ps的时候会把脚本名称也print出来
使用FIFO与守护进程通信。
读FIFO void readfifo() { int len = 0; char buf[1024]; memset(buf, 0, sizeof(buf)); int fd = open("/home/test/1/fifo1", O_RDONLY); while ((len = read(fd, buf, sizeof(buf))) > 0) { printf("%s ", buf); } close(fd); return; }
写FIFO void writefifo() { int len = 0; char buf[1024]; memset(buf, 0, sizeof(buf)); int fd = open("/home/test/1/fifo1", O_WRONLY); scanf("%s", buf); write(fd, buf, sizeof(buf)); close(fd); return; }