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

📄 cmutex.h

📁 液晶电视完整代码可实现人机界面
💻 H
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -