server.c_v2

来自「多用户银行系统」· C_V2 代码 · 共 109 行

C_V2
109
字号
#include <stddef.h>#include <signal.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/shm.h>#include <unistd.h>#include "../include/structs.h"#include "../include/stddef.h"#define SHM_MODE (SHM_R | SHM_W) void alloc_buss(int );void save();void trans();void save_(int);void trans_(int);pid_t savepid;pid_t transpid;int main(int argc , char **argv){		key_t key;	SHM *shm;	USER *user;	int shmid;				pid_t pid;	//pid_t savepid;	//pid_t transpid;	// ignal some signal	if(fork() != 0){		printf("main process exit...\n");		exit(1);		}	if(setsid() < 0){		printf("new session error !\n");		exit(1);		}	if(fork() != 0){		printf("sub process exit....\n");		exit(1);		}	/*************************   DEAMON   **************************/		signal(SIGTTOU,SIG_IGN);	signal(SIGTTIN,SIG_IGN); 	signal(SIGTSTP,SIG_IGN);	signal(SIGHUP ,SIG_IGN);	signal(SIGRQST , alloc_buss);	 	/*	close(0);	close(1);	close(2);	*/	key = ftok("/home/lastbank/src/key" , 'a');	if(    (  shmid = shmget(key , sizeof(SHM) , 0600|IPC_CREAT|IPC_EXCL)  ) == -1    ){		printf("SHM create error !\n");		exit(1);		}	shm = (SHM *)shmat(shmid , NULL , 0);	if(shm == (void *)-1){		printf("access error !\n");		shmctl(shmid , IPC_RMID , NULL);		exit(1);		}			/***************************************************************/	if(fork() == 0){		save();			}else{	/***************************************************************/		printf("daemon pid : %d\n" , getpid());	while(1){		pause();		}	// delete the SHM when exit	shmctl(shmid , IPC_RMID , NULL);	}}void alloc_buss(int signo){	//kill(savepid , signo);	//kill(transpid , signo);	};void save(){	signal(SIGRQST , save_);	};void save_(int signo){	printf("now is in save , signo is : %d\n" , signo);	return ;	};void trans(){	signal(SIGRQST , trans_);	};void trans_(int signo){	printf("now is in transfer , signo is : %d\n" , signo);	return ;};

⌨️ 快捷键说明

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