⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitor.c

📁 linux下串口的访问
💻 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 + -