资源简介

银行叫号排队系统_Unix编程_源码及答辩文档_课程大作业:包含系统源码和需求分析,课程答辩ppt等。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N_SEC 20

struct sembuf sops[4];
static union semun 
{
          int val;
          struct semid_ds *buf;
          ushort * array;
      }init_v;

int BeginWaiter(int semsint num)
{
    int id=-1;
    if(!(id=fork()))//child
{
   while(1)
{
    struct sembuf op={2-10};
     if(-1==semop(sems&op1))
 exit(0);
 op.sem_num=3;op.sem_op=1;
 if(-1==semop(sems&op1))
 exit(0);
 ///service
 int random=1+(int)(20.0*rand()/(RAND_MAX*1.0));
 printf(“\n*****\n%d is on dutyserve time=%d\n***********\n“num20+random);
 sleep(10+random);
   }
}else
return id;
}

int main(int argc char *argv[])
{
printf(“parent id=%d\n“getpid());
int sems=semget(IPC_PRIVATE50666);
union semun arg;
unsigned short init_v[5]={120000};
arg.array=init_v;
semctl(sems0SETALLarg);
char custom[100]=““;
////////////////////////
srand(0);
int s1=BeginWaiter(sems0);
int s2=BeginWaiter(sems1);
printf(“Waiters are:%d%d“s1s2);
//////////////
while(1)
{
printf(“Welcome!please input you name:“);
scanf(“%s“custom);
if(!strcmp(custom“exit“))
{
   semctl(sems0IPC_RMIDarg);
   kill(SIGKILLs1);
   kill(SIGKILLs2);
   exit(0);
}
if(!fork())//child
{
  struct sembuf ops={0-10};
          semop(sems&ops1);//p mutexalternative
  ops.sem_num=4ops.sem_op=1;
  semop(sems&ops/*(struct sembuf*)&{410}*/1);//get ticket
  ops.sem_num=0;ops.sem_op=1;
  semop(sems&ops/*(struct sembuf*)&{010}*/1);//V mutex.alternative
  /////////////////////
   ops.sem_num=1;ops.sem_op=-1;
  semop(sems&ops/*(struct sembuf*)&{1-10}*/1);//compete for seat
  int seats=semctl(sems1GETVALarg);
  printf(“\nThere are %d seates remained\n“seats);
  ////////////////
   ops.sem_num=2;ops.sem_op=1;
  semop(sems&ops/*(struct sembuf*)&{210}*/1);//wake waiter up
   ops.sem_num=3;ops.sem_op=-1;
  semop(sems&ops/*(struct sembuf*)&{3-10}*/1);//wait for called for
           ops.sem_num=1;ops.sem_op=1;
  semop(sems&ops/*(struct sembuf*)&{110}*/1);//release seat;
  //get service
  printf(“\n**********\ncustom:%s\n**************\\n“custom);
  exit(0);
 
}
}


}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2506  2012-09-08 17:11  源程序\bb.c

     文件       2506  2012-09-08 18:16  源程序\借鉴版.txt

     文件       3035  2012-09-08 18:27  源程序\真我版.txt

     文件       2488  2012-06-18 14:58  bb.c

     文件       2968  2012-06-12 12:56  shiley.txt.txt

     文件       3214  2012-06-18 11:23  shiley-updated.txt

     文件      35840  2012-06-12 17:07  UNIX高级编程公开答辩记录表.doc

     文件      20148  2012-06-18 11:36  流程图.doc

     文件      14336  2018-08-08 14:56  人员分工描述模板.doc

     文件     194048  2018-08-08 14:55  银行叫号排队系统-答辩.ppt

     文件     109056  2018-08-08 14:48  银行排队叫号模拟系统_实验报告及模版-b.doc

     文件      28899  2012-06-19 13:19  银行排队系统需求分析.doc

     目录          0  2012-07-01 16:12  源程序

----------- ---------  ---------- -----  ----

               419044                    13


评论

共有 条评论