2

我想编写一个程序来监视 syslog 并在 PPP 身份验证失败时执行操作。

我认为“tail -f /var/log/syslog”可能会有所帮助,但我不确定如何使用它......可能使用管道?

我发现了类似的用 bash 编写的东西,但我不确定如何在 C 中实现它。

这是 bash 方法:

首先使用 mkfifo 创建一个命名管道:

$ mkfifo -p /home/mezgani/syslog.pipe

使 syslog.conf 指向该文件:

*.info |/home/mezgani/syslog.pipe

重启系统日志:

$ sudo pkill -HUP syslogd

创建读取管道的处理脚本

$ cat > foo
#!/bin/bash
cat /home/mezgani/syslog.pipe | while read input
do
    # some stuff
    echo ${input}
    # ….
done
4

2 回答 2

4

终于我找到了解决办法!!

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

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

然后,我向管道输入日志信息: tail -f /var/log/syslog > /pipe

然后,我使用 OPEN 从 C 程序中读取管道

int pipefd;
pipefd = open("/tmp/myFIFO", O_WRONLY);
于 2011-04-23T08:09:33.937 回答
0

尝试使用 inotify 功能。使用它,您可以监视文件或目录是否已更改。

于 2011-04-21T07:09:59.933 回答