tools.c

来自「多用户银行系统」· C语言 代码 · 共 103 行

C
103
字号
#include <stddef.h>#include <signal.h>#include <sys/types.h>#include "../include/structs.h"#include "../include/stddef.h"int getSHM(){		SHM *shm;	int shmid;		int index;	key_t key;		key = ftok("/root/test.c" , 0);		//shmid = shmget(key , 0 , 0);	shmid = shmget(key , SHM_SIZE , 0600);	shm = shmat(shmid , 0 , 0);	if(shm->flag == 1)		return -1;	shm->flag = 1;	for(index = 0;index < MAX_CLIENT;index ++){		if( (shm->swap_arr)[index].flag == 0){			shm->flag = 0;			shmdt(shm);			return index;			}		}	shm->flag = 0;	shmdt(shm);	return -2;		};int freeSHM(int index){	SHM *shm;	int shmid;		//shmid = shmget(KEY , 0 , 0);	key_t key;	key = ftok("/root/test.c" , 0);	shmid = shmget(key , SHM_SIZE , 0600);	shm = shmat(shmid , 0 , 0);	(shm->swap_arr)[index].flag = 0;		shmdt(shm);	return 0;			};/*int getSHM(){	void *p;        void *tmp;	key_t key;	int shmid;	key = KEY;	shmid = shmget(key , 0 , 0);	//p = shmat(shmid , NULL , 0);	p = shmat(shmid , NULL , SHM_W|SHM_R);	tmp = p;	printf("int getSHM(), SHM's head address : %p\n" , p);		if( *((int *)p) != 0)return -1;	*(int *)tmp = 1;	p += sizeof(int);	while(1){		if(p - tmp >= SHM_SIZE){			*(int *)tmp = 0;			return -1;		}if(*((int *)p) == 0){			*((int *)p) = 1;			p += sizeof(int);			printf("address of p : %p 	in getSHM()...\n" , p);			*(int *)tmp = 0;			return p - tmp;		}if(*((int*)p) == 1){			p += sizeof(int);			p += sizeof(SHM);			continue;		}	}};int freeSHM(void *p){	printf("in freeSHM() , p is : %p\n" , p);	p -= sizeof(int);	printf("in freeSHM() , p is : %p\n" , p);	*(int *)p = 0;	return OK;};*/

⌨️ 快捷键说明

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