#include#include#include#include#include#include#include#define maxshm 5 //定義緩衝區陣列的下標變數個數/* 定義3個訊號量的內部標識 */
int fullid;
int emptyid;
int mutexid;
/* 主函式 */
int main()
sleep(3); //sleep 3秒,等待消費者程序執行完畢
printf(「poducer if over\n」);
exit(0);
} else
printf(「consunera is over\n」);
exit(0);
} else
printf(「consunerb is over\n」);
exit(0);
} }
} /* 父程序返回後**3個子程序 */
wait(0);
wait(0);
wait(0);
/* 斷開並撤消2個共享記憶體 */
shmdt(array);
shmctl(arrayid,ipc_rmid,0);
shmctl(get);
shmctl(getid,ipc_rmid,0);
/* 撤消3個訊號量集 */
semctl(emptyid,ipc_rmid,0);
semctl(fullid,ipc_rmid,0);
semctl(mutexid,ipc_rmid,0);
exit(0);
}
共享記憶體,訊號量
一.共享記憶體 共享記憶體 允許兩個不相關的程序訪問同乙個邏輯記憶體。為兩個正在執行的程序之間共享和傳遞資料不同程序之間共享的記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位址,是非同步通訊,也就是說,在第乙個程序結束對共享記...
共享記憶體 訊號量
1.共享記憶體 a.int shmget key t key,size t size,int shm 建立共享記憶體 參一 為共享記憶體段命名 參二 size以位元組為單位指定需要共享的記憶體容量 參三 許可權標誌 ipc creat 0644 返回值 共享記憶體識別符號 非負整數 b.void s...
共享記憶體和訊號量
共享記憶體和訊號量實現程序間通訊的另外兩種機制。一.共享記憶體 1.共享記憶體的結構 2.實現共享記憶體的函式 1 shmget 函式 功能 建立共享記憶體 引數 key 共享記憶體的名字 size 共享記憶體的大小 以頁為單位分配資源 返回值 成功返回乙個非負整數,即共享記憶體的識別符號 失敗返回...