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

📄 server.c

📁 linux下面的文件锁和信号量的程序
💻 C
字号:
#include "key.h"void term_handler(int);COMM_TABLE * comm_reg;int main (int argc,char ** argv){	key_t key;	int shm_id;		if(argc!=2){		printf("you should give some parameter!\n");		exit(1);	}	if(strlen(argv[1])>=20){		printf("invalid parameter!\n");		exit(1);	}	signal(SIGINT,term_handler);	key=ftok("~/tmp",1);	/* create a share memory if not exist */	if((shm_id=shmget(key,sizeof(COMM_TABLE),IPC_CREAT|SHM_R|SHM_W))==-1){		/* share memory has exist */		if((shm_id=shmget(key,sizeof(COMM_TABLE),SHM_R|SHM_W))==-1){			printf("shmget error %d \n",errno);			exit(2);		}	}	if((comm_reg=(COMM_TABLE *)shmat(shm_id,0,0))==(COMM_TABLE *)-1){		printf("shmat error %d \n",errno);		exit(3);	}	bzero(comm_reg,sizeof(COMM_TABLE));	printf("Share memory id is %d\n",shm_id);	printf("share memory attached from %x to %x\n",comm_reg,\								comm_reg+sizeof(COMM_TABLE));	comm_reg->is_available=0;	sleep(10);	//comm_reg->tc_number=atoi((const char *)argv[1]);	//strcpy(comm_reg->message,argv[1]);	comm_reg->is_available=1;	pause();}void term_handler(int signo){	if(signo==SIGINT){		comm_reg->is_available=0;		exit(0);	}}/* END OF FILE server.c */

⌨️ 快捷键说明

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