server.c

来自「linux下面的文件锁和信号量的程序」· C语言 代码 · 共 51 行

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