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 + -
显示快捷键?