【问题标题】:Watching new entries on Linux Syslog from a C program从 C 程序查看 Linux Syslog 上的新条目
【发布时间】:2011-04-21 06:57:19
【问题描述】:

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

【问题讨论】:

  • 听起来很老套。不是有一个PPP插件机制可以代替吗?
  • 我对 linux PPP 服务器做了一些研究,但没有找到任何东西。

标签: c linux syslog ppp


【解决方案1】:

终于找到解决办法了!!

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

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

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

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

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

【讨论】:

    【解决方案2】:

    尝试使用 inotify 函数。使用它您可以监控文件或目录是否已更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 2013-07-27
      • 2022-01-20
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      相关资源
      最近更新 更多