想做一个程序,监控系统中messageq,大家给点建议或思路
想做一个程序,监控系统中的messageq,大家给点建议或思路
比如:a程序 发送了一个消息, b程序接收了。
作个程序把这个动作给自动记录到文件中。
大家多多帮忙提供思路
------解决方案--------------------先要捕获到这个信息,其它都好作了
------解决方案--------------------可以参考:
FILE *fp;
long getpos = 0;
char tempbuff[1024] = {0};
fp = fopen( "/var/log/messages ", "r ");
if (fp == NULL) return 0;
while ((fgets(buffer,BUFSIZE,fp)) != NULL)
{
if (count > MAXNUMBER)
{
sign = 0;
break;
}
getpos = ftell(fp);
if ((fgets(tempbuff,BUFSIZE,fp)) != NULL)
{
if (affirm_line(tempbuff))
{
strcat(buffer,tempbuff);
}
else fseek(fp,getpos,SEEK_SET);
}
char datetime[16];
memset(datetime,0,16);
if (!parse_record_web(buffer)) continue;
memcpy(datetime,log_rec.datetime,16);
if (compare_datetime(datetime,lasttime)) continue;
sprintf(cData, " <section> "
" <ip> %s </ip> "
" <time> %s </time> "
" <system> linux(操作系统) </system> "
" <from> messages </from> "
" <desc> [主机名:%s][s程序名:%s][s描述:%s][描述:%s](内容由主机名,程序名和描述组成) </desc> "
" <leave> </leave> "
" </section> ",ip,conver_datetime(datetime),log_rec.hostname,log_rec.proname,log_rec.desc);
strcat(cMessageStr,cData);
count++;
}
fclose(fp);
------解决方案--------------------你说的是IPC里面的消息吧,一下子没想到什么办法,但是修改内核源代码里面的相关系统调用肯定是可以的
------解决方案--------------------up