在win下使用C模擬fork()以及程序間通訊

2022-01-10 02:09:07 字數 1419 閱讀 6579

這是大三上學期的作業系統的實驗,過程感觸比較深,但是同時又感覺自己學的很淺薄,所以就將這個自己理解的過程與原始碼發上來。做為筆記以及方便以後再做檢視。如果有實驗需求的也可以跑一下這個程式和你所理解的fork()以及程序通訊有什麼區別。

void winfork()//fork函式模擬--行為模式:子程序就返回0,非子程序返回該程序的子程序的pid

if (num==20)

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

/**********模擬複製內容部分*********/

printf("\n請輸入要執行fork()的程序的pid值:\n"); //選擇父程序

scanf("%d",&pid); //此時的pid是父程序的pid

sign=0;

for(i=0;i<20;i++)

int f_pid,c_pid;//進行程序通訊的程序的id(父子)

char buf[20];//快取區

printf("\n 請輸入父程序 pid\n");

scanf("%d",&f_pid);//獲取父程序pid

/************對父程序的確認**********/

for(i=0;i<20;i++)

;struct pcb_type ram[20]; //定義20個」記憶體「的結構體

int num=0,suspend=0,sign,i,j,pid; /*定義相關引數變數 num用於這裡的空間儲存判定

/建立新程序****/

void create()

{ if(num>=20) /*判斷是否有儲存空間*/

printf("\n 記憶體已滿,請刪除或掛起其他程式");

else{

for(i=0;i<20;i++)

if(ram[i].state==0) break; /*按順序在記憶體中尋找建立新程序的空間*/

printf("\n請輸入新建程序的pid值\n");

由於個人編碼能力,對鍊錶掌握一般,所以不敢用鍊錶寫,使得很多邏輯的表現實際上過於表面了,沒能觸及實質,pcb的定義也是十分一般,定義的變數依舊不充足。如果以後有時間一定把這個東西再完善完善。對於除去這兩個模組的**之外,其他的基礎**都是參考了別人的例子。

在win下使用python tensorflow

主要使用2個軟體 1 anaconda 2 pycharm 對於第二個軟體,安裝後開啟需要啟用碼或sever licence,可以訪問下面 設定引數以及更改的資訊之前的前輩已有奉獻,不再重複,可以依次訪問下面 直接看anaconda到tensorflow的成功安裝,spyder也可以進行用於pyth...

在WIN98下以apache模組方式安裝php

在win98下以apache模組方式安裝php手記 foolboy chinaren.com 相關軟體 mod php程式設計客棧4 4.0.1 pl2.zip php 4.0.1pl2 win32.zip 以上軟體可以在www.php.net或者www.phpuser.com上 注意兩者的版本一定...

在Win32下使用OpenGL

1.win32程式的框架是winmain wndproc。winmain中建立視窗同時實現訊息迴圈,wndproc中實現的是訊息的處理。2.win32程式執行時的過程主要是1 建立視窗2 捕獲視窗中的訊息並處理 win32下要使用opengl的話,在建立視窗時,要增加此視窗對opengl的擴充套件的...