資源簡介
銀行叫號排隊系統_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
評論
共有 條評論