📄 monitor.c
字号:
// monitor.c
#include "wcommon.h"
//#include "msgqueue.h"
#include "isocket.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define LOG_FILE_MONITER "/tmp/moniter_file.log"
#define AddLogToMoniter(x) FileAddLine( LOG_FILE_MONITER, x )
#define AddLogToMoniterEx(x) do { \
char *AddLogToMoniterEx_P = GetCurrentTime(); \
char AddLogToMoniterEx_buf[256]; \
sprintf( AddLogToMoniterEx_buf, "%s : %s\n", AddLogToMoniterEx_P, x ); \
free( AddLogToMoniterEx_P ); \
AddLogToMoniter( AddLogToMoniterEx_buf ); \
} while(0)
int FileAddLine( char * filename, char * content )
{
FILE *fp = NULL;
if ( filename==NULL || content==NULL )
{
PrintS( "para is null" );
return -1;
}
fp = fopen( filename, "a" );
if ( fp==NULL ) // open file failure.
{
perror("fopen file error");
return -2;
}
fputs( content, fp );
fclose( fp );
return 0;
}
char * GetCurrentTime(void)
{
time_t timep; struct tm tm;
char content[256];
time(&timep);
//#if defined(linux)
// setenv("TZ", nvram_safe_get("time_zone"), 1);
//#endif
memcpy(&tm, localtime(&timep), sizeof(struct tm));
// p = localtime(&timep); // 取得当地时间
sprintf( content, "%d/%02d/%02d %02d:%02d:%02d",
(1900+tm.tm_year), (1+tm.tm_mon), tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec );
return strdup( content );
}
int ProcessRequest(char *buf, int len)
{
if ( buf==0 )
return -1;
// Print( "value: %s, len:%d", buf, len );
if ( strcmp( buf, HTTPD_TIMEOUT_EXIT)==0 || len==6 )
{
AddLogToMoniterEx( "Monitor: run httpd..." );
//system( "cd /www" );
chdir("/www");
system( "/usr/sbin/httpd" );
chdir("/");
}
else
{
AddLogToMoniterEx( "other..." );
}
return 0;
}
int main(int argc, char *argv[])
{
int id;
char buf[64];
char tbuf[64];
int len;
AddLogToMoniterEx( "Moniter starting..." );
id = MsgIdGet( 123451 );
memset( buf, 0, 64 );
sprintf( buf, "Monitor id=%d", id );
AddLogToMoniterEx( buf );
if ( id==-1 )
return -1;
while (1)
{
memset( buf, 0, 64 );
len = MsgRecv( id, buf, 2 );
sprintf( tbuf, "Monitor: len=%d, buf=%s\n", len, buf );
AddLogToMoniterEx( tbuf );
if ( len > 0 )
{
ProcessRequest(buf, len);
}
else if (len<=0) //
{
// Print("len=%d, buf=%s", len, buf);
sleep(5);
}
}
return 0;
}
/*
int main(int argc, char *argv[])
{
//int msgid;
char buf[64] = "";
int len;
int fd, fd1;
Print("nServerSocket...");
fd = nServerSocket(MONITOR_SOKET_PATH);
Print( "listen fd=%d", fd );
if ( fd==-1 )
{
Print("nServerSocket error.");
return -1;
}
while(1)
{
Print("nAccept...");
fd1 = nAccept( fd );
Print("fd=%d", fd1 );
if ( fd1==-1 )
{
Print("nAccept error.");
return -1;
}
//msgid = MsgIdGet( MSG_ID_FOR_MONITOR );
//Print( "msgid=%d", msgid );
Print("Receive data...");
while (1)
{
//len = MsgRecv( msgid, buf, MSG_TYPE_HTTPD );
len = nRecv( fd1, buf, 64 );
if ( len > 0 )
{
ProcessRequest(buf, len);
}
else if (len==0)//
{
sleep(5);
}
else // maybe httpd is killed.
{
// sleep(1);
break;
}
}
}
return 0;
}
//*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -