/*
 *========================================================================
 *
 *   시스템명 : AZN_PLAZA_LANE APP
 *   파 일 명 : psmon.c
 *   작 성 자 : JBY
 *   작 성 일 : 2018.07.13
 *   수 정 일 :
 *   설    명 :
 *
 *========================================================================
*/

#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>

#include "app_info.h"
#include "task_info.h"
#include "dir_path.h"
#include "iis_func.h"
void SIG_term(sig)
int sig;
{
    exit(1);
}

/*
 *========================================================================
 *
 *   함 수 명 : main()
 *   작 성 자 : JBY
 *   작 성 일 : 2018.07.13
 *   수 정 일 :
 *   설    명 :
 *
 *========================================================================
*/

int main()
{
    FILE *fp;
    int tid=1, retl;
    char path[128];
    int shmid;
//    SYS_INFO   *system_info;

//    signalSet(SIG_term);
    while(1)
    {
#if 0
system_info = malloc(sizeof(SYS_INFO));
#endif
        retl = checkTime4M(1,0);
        if(retl) /* 1분 */
        {
proc_log("psmon main 1[%d]\n", sizeof(SYS_INFO));
#if 1
            memset(&system_info, 0x00, sizeof(SYS_INFO));
#endif
proc_log("psmon main 2\n");
            sprintf(path, "%s/%s/PSMON", DIR_TCS, DIR_BASEINFO);
proc_log("psmon main 3[%s]\n", path);
            fp = fopen(path, "wt");
proc_log("psmon main 4[%d]\n", fp);
            shmid = shmget(KEY_INIT(), sizeof(SYS_INFO), IPC_PERM);
proc_log("psmon main 5[%d]\n", shmid);
            if( shmid<0 )
            {
proc_log("psmon main 5-1[%d]\n", tid);
                fprintf(fp, "%s %s %s %d\n", system_info->task_info[tid].argv[0], system_info->task_info[tid].argv[1], system_info->task_info[tid].argv[2], system_info->task_info[tid].act);
proc_log("psmon main 5-2[%s]\n", fp);
            }
proc_log("psmon main 6[%d]\n", shmid);
            system_info = (SYS_INFO *)shmat(shmid,(char*)0,0);
proc_log("psmon main 7[%d]\n", shmid);
            for(tid=1;tid<MAX_TASKS;tid++)
            {
proc_log("psmon main 7-1[%d]\n", system_info->task_info[tid].task_id);
                if(system_info->task_info[tid].task_id == 0) break;
proc_log("psmon main 7-2[%d]\n", tid);
                if(strlen(system_info->task_info[tid].argv[2]))
                {
proc_log("psmon main 7-3[%d]\n", tid);
                    fprintf(fp, "3 %s %s %s %d\n", system_info->task_info[tid].argv[0], system_info->task_info[tid].argv[1], system_info->task_info[tid].argv[2], system_info->task_info[tid].act);
                }
                else if(strlen(system_info->task_info[tid].argv[1]))
                {
proc_log("psmon main 7-4[%d]\n", tid);
                    fprintf(fp, "2 %s %s %d\n", system_info->task_info[tid].argv[0], system_info->task_info[tid].argv[1], system_info->task_info[tid].act);
                }
                else if(strlen(system_info->task_info[tid].argv[0]))
                {
proc_log("psmon main 7-5[%d]\n", tid);
                    fprintf(fp, "1 %s %d\n", system_info->task_info[tid].argv[0], system_info->task_info[tid].act);
                }
            }
proc_log("psmon main 8[%d]\n", shmid);
            fclose(fp);
proc_log("psmon main 9[%d]\n", shmid);
            shmdt((char *)system_info);
proc_log("psmon main 10[%d]\n", shmid);
        }
#if 0
free(system_info);
#endif
        sleep(1);
    }
}
