cmutex.h

来自「液晶电视完整代码可实现人机界面」· C头文件 代码 · 共 93 行

H
93
字号
#ifndef CMUTEXT_H#define CMUTEXT_H/////////////////////////////////////////////////////////////////////////////////#include <stdlib.h>#include <stdio.h>#include "my_lock.h"///////////////////////////////////////////////////////////////////////////////////子进程状态//csBorn		子进程新生//csWait 		等待获得互斥量//csService     阻塞等待接收客户端的请求//csBusy		正在处理客户端的请求//csIdle		处于发呆状态//csDead		子进程已退出 死亡enum EChildState {csBorn = 0, csWait, csService, csBusy, csIdle, csDead};//子进程信息struct tagChildInfo{	int         m_socket;	pid_t 		m_chiPid;	EChildState m_chiState;};class CMuTex{public:	/////////////////////////////////////////////////////////////////////////////	//	隐藏默值和拷贝构造函数//	CMuTex& operator=(const CMuTex&){};	CMuTex(void){};	CMuTex(const CMuTex&){};		tagChildInfo*  m_ChiInfo;	int   m_childcount;	int   m_lostpid;		//public:	/////////////////////////////////////////////////////////////////////////////	//构造函数 参数 sum 表示主进程需要创建多少子进程 sum >= 1	CMuTex(int sum)	{		int I;		printf("[CMuText ]子进程个数[%d]\n", sum);			m_childcount = sum; 		//创建存储子进程状态的数组 并对其进行初始化		m_ChiInfo    = (tagChildInfo *)malloc(sizeof(tagChildInfo) * sum);		 		for(I = 0; I < sum ; I++)		{			SetChiProInfo(I, -1, -1, csDead);		}		//		printf("[CMuText ] 初始化共享文件\n");			//		my_lock_init(LOCK_FILE);	}	/////////////////////////////////////////////////////////////////////////////	//析造函数	~CMuTex(){free(m_ChiInfo);};	/////////////////////////////////////////////////////////////////////////////	//等待获得互斥量的控制权	int WaitMutex( char *);	/////////////////////////////////////////////////////////////////////////////	//释放对互斥量的控制权	int ReleaseMutex();	/////////////////////////////////////////////////////////////////////////////	//保存指定索引的子进程信息	void SetChiProInfo(int index, pid_t chipid, int socket, EChildState chistate);	/////////////////////////////////////////////////////////////////////////////	//保存指定进程ID的子进程信息	void SetChiProInfoEx(pid_t chipid, EChildState chistate);	/////////////////////////////////////////////////////////////////////////////	//得到子进程的状态	EChildState GetChiProState(int index);	/////////////////////////////////////////////////////////////////////////////	//得到子进程的ID	pid_t GetChiProPid(int index);	/////////////////////////////////////////////////////////////////////////////	//查找指定进程号的进程是否退出	int ChiProIsLive(int pid);	/////////////////////////////////////////////////////////////////////////////	//得到指定进程的套接字	int GetChiProSoc(int index, int pid=0);	//监控子进程的状态	int WatchChiPro();};#endif

⌨️ 快捷键说明

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