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

📄 cmutex.cpp

📁 液晶电视完整代码可实现人机界面
💻 CPP
字号:
#include "CMuTex.h"///////////////////////////////////////////////////////////////////////////////查找指定进程号的进程是否退出int CMuTex::ChiProIsLive(int pid){	FILE *fp;	char sCmd[200], sPid[20];		sprintf(sCmd, "ps -elf | sed '/%d/!d' |", pid );	sprintf(sCmd, "%s awk '{FS=\" \"}{print $4}' |", sCmd);	sprintf(sCmd, "%s sed '/%d/!d' 2>/dev/null", sCmd, pid);	fp=popen(sCmd, "r" );	if( fp == NULL )	{		return 2;	}		memset( sPid, 0, sizeof(sPid));	fread((void *)sPid, sizeof(char), 8, fp );	pclose(fp);		if(atoi(sPid) != pid )	{ 		return 0; //the process not exist	}	else	{		return 1;	//the process is exist	}}  ///////////////////////////////////////////////////////////////////////////////等待获得互斥量的控制权int CMuTex::WaitMutex(char * lockfile){	return my_lock_wait(lockfile);}///////////////////////////////////////////////////////////////////////////////释放对互斥量的控制权int CMuTex::ReleaseMutex(){	return my_lock_release();}///////////////////////////////////////////////////////////////////////////////保存指定索引的子进程信息void CMuTex::SetChiProInfo(int index, pid_t chipid, int socket, EChildState chistate){	m_ChiInfo[index].m_chiPid = chipid;	m_ChiInfo[index].m_chiState = chistate;	m_ChiInfo[index].m_socket = socket;}///////////////////////////////////////////////////////////////////////////////保存指定进程ID的子进程信息void CMuTex::SetChiProInfoEx(pid_t chipid, EChildState chistate){	int I;	for(I = 0; I < m_childcount; I++)	{		if(m_ChiInfo[I].m_chiPid == chipid)		{			m_ChiInfo[I].m_chiState = chistate;			break;		}	}}///////////////////////////////////////////////////////////////////////////////得到子进程的状态EChildState CMuTex::GetChiProState(int index){	return m_ChiInfo[index].m_chiState;}///////////////////////////////////////////////////////////////////////////////得到子进程的IDpid_t CMuTex::GetChiProPid(int index){	return m_ChiInfo[index].m_chiPid;}///////////////////////////////////////////////////////////////////////////////监控子进程的状态int CMuTex::WatchChiPro(){	int I;	for(I = 0; I < m_childcount; I++)	{		if((m_ChiInfo[I].m_chiPid != -1) && !ChiProIsLive(m_ChiInfo[I].m_chiPid))		{			m_ChiInfo[I].m_chiState = csDead;		}	}	return 0;}//获得子进程的套接字int CMuTex::GetChiProSoc(int index, int pid){	int i=0;	if(pid != 0)	{		for(i=0; i<m_childcount; i++)		{			if(m_ChiInfo[i].m_chiPid == pid)			{				return m_ChiInfo[i].m_socket;			}		}	}	else	{		return m_ChiInfo[index].m_socket;	}	return -1;}

⌨️ 快捷键说明

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