2011-04-21 71 views
0

我想编写一个程序来监视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 
+0

听起来很哈克读管道。没有可以使用的PPP插件机制吗? – trojanfoe 2011-04-21 07:09:27

+0

我做了一些关于Linux PPP服务器的研究,但找不到任何东西。 – capsula 2011-04-21 07:16:46

回答

1

最后我可以找到解决方案!

该解决方案使用命名管道!

首先,我需要创建一个命名管道: mkfifo /管

然后,我喂管与日志信息: 尾-f在/ var/log/syslog的> /管

然后,我从C程序中使用OPEN

int pipefd; 
pipefd = open("/tmp/myFIFO", O_WRONLY); 
0

尝试使用inotify的功能处理脚本。使用它你可以监视一个文件或目录是否已经改变。

+0

谢谢!这在管道不起作用的情况下可能有用 – capsula 2011-04-21 07:12:11