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

📄 sysmonitor.cxx

📁 HPunix下资源监视程序,查看监视进程的CPU、内存的参数
💻 CXX
字号:
#include <strings.h>#include <stdio.h>#include <signal.h>#include <string.h>#include <pthread.h>#include "sysmonitor.h"#include "myptop.h"#include <netdb.h>#include <stdlib.h>#include <unistd.h>#include <cc2000_pthread.h>#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/semaphore.h>int moni_interval;int nodenumber;extern struct NETMESSAGE *net_message_ptr;extern struct net_name *net_name_ptr;extern struct proc_name *proc_name_ptr;extern struct part_naem *part_name_ptr;extern struct PTHREADMESSAGE *pthread_message_ptr;extern struct netrecord *prev_net_ptr,*cur_net_ptr;extern struct NODEINFO *nodeinfo_ptr;int node_num=0;//NODEINFO nodeinfobuf[10];void	send_message_toserver();void     ctrlchandler(int);int	sockfd=-1;sem_t *sem;extern struct pst_processor *psp,*psp_last;int main(int argc,char *argv[]){	pthread_t send_thread_id;	pthread_t recv_thread_id;	pthread_t check_status_id;	char    ipaddress[30],buff[512];	char    descr[100];	int     length=-1;	struct  sockaddr_in tcp_cli_addr;	int     channel_srv,count=0;			signal(SIGINT,ctrlchandler);	signal(SIGPIPE,SIG_IGN);		if (argc==2)	{		int temp=atoi(argv[1]);		if((temp>0)&&(temp<11))		{			moni_interval=temp;		}		else		{			printf("moni_interval must be a integer between 0 and 11!\n");			exit(1);		}	}	else	{		printf("Usage:%s moni_interval\n",argv[0]);		printf("moni_interval is a integer between 0 and 11!\n");		exit(1);			}		bzero(hostname,HOSTLEN);	gethostname(hostname,HOSTLEN);	if(pthread_create(&send_thread_id,pthread_attr_default,(pthread_startroutine_t)send_message_toserver,(pthread_addr_t)0)<0)	{	        perror("create  send_message_toserver  error");	        exit(-1);	}	printf("send pthread create succeed!\n");	//create semaphore	int flags,value=1;	mode_t  mode=0777;	flags=O_RDWR|O_CREAT;	sem=sem_open("/data/users/osa/bin/monitor_sem",flags,mode,value);	if((!strcmp(hostname,"scd1"))||(!(strcmp(hostname,"scd2"))))	{		printf("start init DCEPM database                 ................\n");		dcepm_init();		strcpy(descr,"This is server");		sockfd=srv_init("sysmonitor",0,descr);	 	if(sockfd < 0)    {       printf("this sockfd < 0 error !!!\n");       exit(0);    }    if(pthread_create(&check_status_id,pthread_attr_default,(pthread_startroutine_t)check_status,(pthread_addr_t)0)<0)	  {	  		perror("create check_status()  error");	  		exit(-1);	  } 	  printf("check_status pthread create succeed!\n");		for(;;)		{			//channel_srv=accept(sockfd,(struct sockaddr *)&tcp_cli_addr,&length);			channel_srv=srv_accept(sockfd,(struct sockaddr *)&tcp_cli_addr,&length,descr);			//printf(" channel_srv ==  %d   ---- \n",channel_srv);			if(channel_srv<0)			{				printf("channel_srv < 0 error!!!!\n");				continue;			}			strcpy(ipaddress,inet_ntop(AF_INET,&tcp_cli_addr.sin_addr,buff,sizeof(buff)));			printf("ipaddress =  %s \n",ipaddress);			if(pthread_create(&recv_thread_id,pthread_attr_default,(pthread_startroutine_t)recv_message_fromcli,(pthread_addr_t)channel_srv)<0)			{	   			perror("create  recv_message_toserver  error"); 					exit(-1);			}			printf("recv_thread_id create is :%d \n",recv_thread_id);		}	}	else	{		while(1)		{			sleep(20);		}	}	return(0);}void ctrlchandler(int){	int retcode=-1;	retcode=dcepm_tb_close();	close(sockfd);	shutdown(sockfd,2);	sem_unlink("/data/users/osa/bin/monitor_sem");	free(psp);	free(psp_last);	free(pthread_message_ptr);	free(proc_name_ptr);	free(net_message_ptr);	free(net_name_ptr);	free(part_name_ptr);	free(prev_net_ptr);	free(cur_net_ptr);	printf("\n GOODBYE\n");	exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -