semtest.c

来自「关于IPC通信的小程序代码!」· C语言 代码 · 共 82 行

C
82
字号
///////////////////////////////////////////////////////////////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 + =
减小字号Ctrl + -
显示快捷键?