91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

當程序運行時,父進程fork出4個子進程。父進程負責產生消息(每1s產生一個消息),4個子進程負責處理消息。父子進程之間通過消息隊列來傳遞消息。 父進程需要維護一個本地數據庫(格式與共享數據庫相同),當生成一個消息時,父進程要同步更新本地數據庫。子進程在處理消息時,根據消息的內容來對共享數據庫進行更新

資源截圖

代碼片段和文件信息

#include?“child.h“

int?count=0; /*每個子進程的運算次數*/
int?id;

/*終止子進程*/
void?killchild(){
????printf(“pid:%dcount:%d\n“getpid()count);
????exit(1);
}

/*刪除信號量*/
void?delete_sem(){
????if(semctl(id0?IPC_RMID?0)==-1){
????printf(“delete?sem?error\n“);
????}
????printf(“delete?sem?scuueed\n“);
}

/*收到消息*/
void?recieve_message(mqd_t?mqdchar?*addrint?semid){
????struct?mq_attr?mqattr;
????mq_getattr(mqd&mqattr);
????int?msg[mqattr.mq_msgsize];

????if((mq_receive(mqdmsgmqattr.mq_msgsizeNULL))!=-1){
P(semid); /*上鎖*/
if(msg[1]==1){
????addr[msg[0]]--;
}
else{
????addr[msg[0]]++;
}
V(semid); /*釋放鎖*/
count++;
????}

}

/*上鎖*/
void?P(int?id)
{
????struct?sembuf?sb[1]=?{0-1?0};
????semop(id?sb?1);
}

/*釋放鎖*/
void?V(int?id)
{
????struct?sembuf?sb[1]?=?{0?1?0};
????semop(id?sb?1);
}

/*初始化信號量*/
void?init_sem(int?semid){
????id=semid;
????semun?su={1};

????semctl(semid0SETVALsu);
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-08-14?09:54??吳月輝_操作系統編碼練習一\
?????目錄???????????0??2018-08-14?09:53??吳月輝_操作系統編碼練習一\test1\
?????文件?????????320??2018-08-10?14:28??吳月輝_操作系統編碼練習一\test1\Makefile
?????文件?????????993??2018-08-14?09:55??吳月輝_操作系統編碼練習一\test1\child.c
?????文件?????????382??2018-08-14?09:50??吳月輝_操作系統編碼練習一\test1\child.h
?????文件????????2155??2018-08-14?09:56??吳月輝_操作系統編碼練習一\test1\father.c
?????文件?????????414??2018-08-14?09:51??吳月輝_操作系統編碼練習一\test1\father.h
?????文件????????1328??2018-08-14?09:57??吳月輝_操作系統編碼練習一\test1\main.c
?????文件???????14680??2018-08-14?09:51??吳月輝_操作系統編碼練習一\test1\test1.exe
?????文件??????150016??2018-08-10?18:01??吳月輝_操作系統編碼練習一\運行說明及實驗截圖.doc

評論

共有 條評論