从C程序监视Linux系统日志上的新条目
问题描述:
我想编写一个程序来监视syslog并在PPP认证失败时执行操作。从C程序监视Linux系统日志上的新条目
我认为“tail -f/var/log/syslog”可以帮助,但我不知道如何使用它......可能使用管道?
我也发现了类似写在bash的东西,但我不知道如何实现它在C.
这是bash的方法:
首先使用mkfifo创建命名管道:
$ mkfifo -p /home/mezgani/syslog.pipe
制作syslog.conf内容为指向此文件:
*.info |/home/mezgani/syslog.pipe
重启SYS日志:
$ sudo pkill -HUP syslogd
创建阅读管
$ cat > foo
#!/bin/bash
cat /home/mezgani/syslog.pipe | while read input
do
# some stuff
echo ${input}
# ….
done
答
最后我可以找到解决方案!
该解决方案使用命名管道!
首先,我需要创建一个命名管道: mkfifo /管
然后,我喂管与日志信息: 尾-f在/ var/log/syslog的> /管
然后,我从C程序中使用OPEN
int pipefd;
pipefd = open("/tmp/myFIFO", O_WRONLY);
听起来很哈克读管道。没有可以使用的PPP插件机制吗? – trojanfoe 2011-04-21 07:09:27
我做了一些关于Linux PPP服务器的研究,但找不到任何东西。 – capsula 2011-04-21 07:16:46