?? server.c_v2
字號:
#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -