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

syslogを再起動します。

$ 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 に答える