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

📄 semtest.c

📁 关于IPC通信的小程序代码!
💻 C
字号:
///////////////////////////////////////////////////////////////ModuleName:	semtest.c//Author:	delaybbc//WrittenTime:	2004/3/5//Functions:	This module test use of sem in Linux/Unix IPC//Reference:	/////////////////////////////////////////////////////////////////////////////////////////header///////////////////////////#include "/home/delaybbc/inc/m_ipc.h"#include "/home/delaybbc/inc/m_networks.h"//////////////////////constant defination////////////////////////////////////////////global variant///////////////////////#define NUM_SEMAPHORE 1int sem_id;struct sembuf sem[1];key_t unique_id;int value;////////////////////////////body/////////////////////////////void quit(){	semctl(sem_id,0,IPC_RMID,0);	exit(0);}void handle_ctrl_c(int signo){	sem[0].sem_num=0;	sem[0].sem_op=1;	sem[0].sem_flg=0;	if(semop(sem_id,sem,1)==-1)		{		printf("can not modify the semaphore value");		quit();		}	value=semctl(sem_id,0,GETVAL,0);	if(value>=10) quit();	printf("%d",value);}main(){		struct sigaction act;	sigset_t sigmask;		unique_id=ftok(".",'r');	printf("%d\n",unique_id);	sem_id=semget(unique_id,0,0);	printf("%d\n",sem_id);	if(sem_id==-1)	{		sem_id=semget(unique_id,NUM_SEMAPHORE,IPC_CREAT|IPC_EXCL|0666);		if(sem_id==-1)			{			printf("create semaphore error!\n");			quit();			}	}	printf("%d\n",sem_id);	value=semctl(sem_id,0,GETVAL,0);	printf("asd%d",value);			act.sa_handler=handle_ctrl_c;	sigemptyset(&act.sa_mask);	sigaddset(&act.sa_mask,SIGINT);	sigaction(SIGINT,&act,NULL);	while(1);	{					}	}

⌨️ 快捷键说明

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