编写一个监控程序,通过dmesg命令把内核打印输出到某个文件,然后每个一秒钟,输出一次,每一次都和上一次到信息比较,如果有差异,则打印到串口终端。
#include <stdio.h>
#include <stdlib.h>
int compareFile(FILE *old, FILE *new);
int main()
{
FILE *new;
FILE *old;
int lRet;
static first = 0;
system("touch file_new");
system("touch file_old");
new = fopen("file_new", "rw");
old = fopen("file_old", "rw");
while(1)
{
sleep(1);
system("dmesg > file_new");
if (first == 0)
{
system("cp file_new file_old");
first++;
continue;
}
new = fopen("file_new", "rw");
old = fopen("file_old", "rw");
if (compareFile(new, old) == 0)
{
fclose(new);
fclose(old);
continue;
}
else
{
fclose(new);
fclose(old);
system("diff file_new file_old");
system("cp file_new file_old");
}
}
return 0;
}
int compareFile(FILE *old, FILE *new)
{
char c1;
char c2;
while(!feof(old) && !feof(new))
{
c1 = fgetc(old);
c2 = fgetc(new);
if (c1 != c2)
{
return -1;
}
}
if ((c1 == EOF)&&(c2 == EOF))
{
return 0;
}
return -1;
}
2、编译后,后台运行该程序即可。