从 C 程序观看 Linux Syslog 上的新条目

发布于 2024-11-02 19:02:44 字数 602 浏览 0 评论 0原文

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

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

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

这是 bash 方法:

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

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

使 syslog.conf 指向此文件:

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

重新启动 syslog:

$ sudo pkill -HUP syslogd

创建读取管道的处理脚本

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

I want to write a program that monitors syslog and performs an action when PPP authentication fails.

I think "tail -f /var/log/syslog" could help, but I'm not sure how to use it... probably using pipes?

I have found something similar written in bash, but I'm not sure how to implement it in C.

This is the bash method:

First create a named pipe using mkfifo:

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

Make syslog.conf to points to this file:

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

Restart syslog:

$ sudo pkill -HUP syslogd

Create processing script that read the pipe

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

二智少女 2024-11-09 19:02:44

终于我找到了解决方案!

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

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

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

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

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

Finally I could found the solution!!

The solution was using named pipes!

First, I need to create a named pipe:
mkfifo /pipe

Then, I feed the pipe with the log info:
tail -f /var/log/syslog > /pipe

And then, I read the pipe from the C program using OPEN

int pipefd;
pipefd = open("/tmp/myFIFO", O_WRONLY);
神经大条 2024-11-09 19:02:44

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

Try to use inotify function. Using it you can monitor if a file or directory has changed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文