xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 69KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-03
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

開發(fā)環(huán)境為eclipse+cdt插件, 用消息與共享內(nèi)存實(shí)現(xiàn)信號量的控制 設(shè)計(jì)內(nèi)容 要求產(chǎn)生3個(gè)進(jìn)程: 1、兩個(gè)進(jìn)程模擬需要進(jìn)入臨界區(qū)的用戶進(jìn)程,當(dāng)需要進(jìn)入臨界區(qū)時(shí),顯示:“進(jìn)程x請求進(jìn)入臨界區(qū)…”,同時(shí)向管理進(jìn)程提出申請;申請返回,表示進(jìn)入了臨界區(qū)。在臨界區(qū)中等待一段隨機(jī)時(shí)間,并顯示:“進(jìn)程x正在臨界區(qū)…”;當(dāng)時(shí)間結(jié)束,顯示:“進(jìn)程x退出臨界區(qū)…”,同時(shí)向管理進(jìn)程提出退出申請;當(dāng)申請返回,顯示:“進(jìn)程x已退出臨界區(qū)?!? 2、一個(gè)進(jìn)程作為原語的管理進(jìn)程,接受其他進(jìn)程的臨界區(qū)進(jìn)入請求:如果允許進(jìn)入,則設(shè)置相應(yīng)變量,然后返回;如果不允許進(jìn)入,則進(jìn)入循環(huán)等待,直到允許為止; 3、對臨界區(qū)的訪

資源截圖

代碼片段和文件信息

/*
?============================================================================
?Name????????:?OSP.c
?Author??????:?
?Version?????:
?Copyright???:?Your?copyright?notice
?Description?:?Hello?World?in?C?Ansi-style
?============================================================================
?*/

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?“ran.h“
#define?MSGKEY?898989

//臨界區(qū)
struct?crform
{
?int?sem;?????????//臨界區(qū)的信號量值sem
?int?head;????????//臨界區(qū)等待隊(duì)列的頭,指向的是最先到的進(jìn)程
?int?tail;??????????//臨界區(qū)等待隊(duì)列的尾,指向的是進(jìn)入等待隊(duì)列的進(jìn)程
?int?duilie[20];?????//存放的是等待的進(jìn)程的信息,以便喚醒
}cr;

//消息隊(duì)列:
struct?msgform
{
?long?msgtype;?????//消息的類型,在取消息隊(duì)列時(shí)用于區(qū)分哪些是該取的信息
?int??mtext;????????//信息的內(nèi)容,在這里是申請|退出進(jìn)程的信息
};



void?into();
void?out();

int?main(void)?{
/*************************************************************************************************************/
puts(“***********************提示信息***********************\n“);
puts(“在程序運(yùn)行過程中:\n“);
puts(“-------輸入?0?繼續(xù)運(yùn)行程序\n“);
puts(“-------輸入?1?暫停運(yùn)行程序\n“);
puts(“-------輸入?2?退出程序\n“);
puts(“*****************************************************\n“);

/************************************************************************************************************/
int?ppid=getpid();
printf(“控制進(jìn)程ID:%d\n“ppid);

/*************************************************************************************************************/

cr.sem?=?1;?//初始臨界區(qū)信號量必須為一,因?yàn)橹辉试S一個(gè)進(jìn)程進(jìn)入臨界區(qū)
cr.head=0;?????????//初始時(shí)指向等待隊(duì)列的第一個(gè)單元
cr.tail=0;

//共享內(nèi)存結(jié)構(gòu)體
struct?ShMe{
int?num;
int?flags;
int?p1;
int?p2;
};

??/*創(chuàng)建共享內(nèi)存的IPC*/
int?shmid=shmget(IPC_PRIVATE10240666|IPC_CREAT);
if(shmid==-1){
printf(“共享內(nèi)存區(qū)創(chuàng)建錯(cuò)誤-----\n“);
exit(0);
}


????pid_t?id?=?fork();
????if?(id<0)?{
????????printf(“新進(jìn)程創(chuàng)建錯(cuò)誤??!??2秒后自動(dòng)退出。。。。。\n“);
????????sleep(2);
????????exit(0);
????}else?if?(id==0)?{
???????//?printf(“01?i‘m?in?new?process?my?id?is?%d?\n“?getpid());
????????pid_t?id2?=?fork();
????????if(id2<0){
???????? printf(“新進(jìn)程創(chuàng)建錯(cuò)誤??!??2秒后自動(dòng)退出。。。。。\n“);
???????? ????????sleep(2);
???????? ????????exit(0);
????????}else?if?(id2==0)?{
????//???????printf(“02?i‘m?in?new?process?my?id?is?%d?\n“?getpid());
????????????/*設(shè)置進(jìn)程1,循環(huán)訪問臨界區(qū)*/
????????????//
????????????//
????????????//
????????????//**************************************************************************************************************************
?????????? struct?msgform?msg;
????????????key_t?hh=ftok(“OSP.c“1);
??????????? int?msgqid=msgget(hh0666|IPC_CREAT);


????????????struct?ShMe?*?addr;
????????????addr=(struct?ShMe*)shmat(shmid00);
????????????if(addr==(struct?ShMe*)-1)
????????????printf(“映射內(nèi)存錯(cuò)誤1------\n“);
????????????/*從共享內(nèi)存讀出數(shù)據(jù)*/
????????????int?flags=0;
????????????flags=addr->flags;
????????????(*addr).p1=getpid();
???????? printf(“進(jìn)程1??ID:%d\n“getpid());

????????????while(flags==1||flags==0){
???????????? if(flags==0){
???????????? //******************************

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-12-20?13:30??OSP\
?????文件???????31338??2011-12-19?09:38??OSP\.cproject
?????文件????????2378??2011-12-20?13:29??OSP\.project
?????目錄???????????0??2011-12-20?13:24??OSP\Debug\
?????文件???????80030??2011-12-20?13:24??OSP\Debug\OSP
?????文件?????????971??2011-12-20?13:24??OSP\Debug\makefile
?????文件?????????227??2011-12-20?12:41??OSP\Debug\objects.mk
?????文件?????????389??2011-12-20?13:24??OSP\Debug\sources.mk
?????目錄???????????0??2011-12-20?13:24??OSP\Debug\src\
?????文件??????????52??2011-12-20?13:24??OSP\Debug\src\OSP.d
?????文件???????56600??2011-12-20?13:24??OSP\Debug\src\OSP.o
?????文件??????????60??2011-12-01?20:13??OSP\Debug\src\pandv.d
?????文件????????8104??2011-12-01?20:13??OSP\Debug\src\pandv.o
?????文件??????????24??2011-12-20?09:27??OSP\Debug\src\ran.d
?????文件???????21628??2011-12-20?09:27??OSP\Debug\src\ran.o
?????文件?????????714??2011-12-20?13:24??OSP\Debug\src\subdir.mk
?????文件??????????48??2011-12-02?11:08??OSP\Debug\src\tp.d
?????文件???????15288??2011-12-02?11:08??OSP\Debug\src\tp.o
?????目錄???????????0??2011-12-20?12:33??OSP\src\
?????文件???????16198??2011-12-20?13:24??OSP\src\OSP.c
?????文件?????????307??2011-12-01?21:46??OSP\src\ran.c
?????文件?????????134??2011-12-01?21:46??OSP\src\ran.h

評論

共有 條評論

相關(guān)資源