#include "Common.h"

#include "Logger.h"

#include <stdio.h>
#include <errno.h>
#include <string.h>



bool IsRunRcMonD()
{
	char tempBuffer[64];
	FILE * fd = NULL;
	bool bRun = false;

	// rc_mond 의 worker 가 동작 중인지 확인을 위해 -n 옵션 사용
	snprintf( tempBuffer, sizeof( tempBuffer ), "pgrep -nx %s | sort", PROCESS_NAME_RC_MONITORING_DAEMON );

	fd = popen( tempBuffer, "r" );
	if( fd == NULL )
	{
		int errorNum = errno;
		LOG( LERR, "%s process check fail.[%d][%s]", PROCESS_NAME_RC_MONITORING_DAEMON, errorNum, strerror( errorNum ) );

		// 오류 발생시 false 반환하여.. 해당 프로세스가 동작 중이지 않는 것으로 처리.
		return false;
	}
	else
	{
		memset( tempBuffer, 0x00, sizeof( tempBuffer ) );
		if( fgets( tempBuffer, sizeof( tempBuffer ) - 1, fd ) != NULL )
		{
			// 프로세스 ID 가 존재하는 경우...
			//_LOG( LINF, "[SELECT ] %s process found. pid [%d]", PROCESS_NAME_MONITORING_DAEMON, atoi( tempBuffer ) );
			bRun = true;
		}

		pclose( fd );
		return bRun;
	}
}

