linux共享記憶體與訊號量的使用

2021-06-22 09:50:46 字數 952 閱讀 1705

1、使用共享記憶體在兩個程序中傳值

2、使用訊號量做同步控制。

#include #include #include #include #include #include #include static int init_semvalue (int);

static void del_semvalue (int);

static int p (int);

static int v (int);

//自己定義的semun結構體

union semun

;int

main (int argc, char *argv)

//建立子程序

if ((pid = fork ()) == 0) //子程序

num=shmat(shid, null,0);

if(num==null)

while (1)

if (!v (sem_id))//釋放資源

exit (exit_failure);}}

else if (pid > 0) //父程序

num=shmat(shid, null,0);

if(num==null)

sleep (1);

while (1)

if (!v (sem_id))

exit (exit_failure);

}sleep (8);

//銷毀訊號量

del_semvalue (sem_id);

}exit (exit_success);

}static int

init_semvalue (int id)

static void

del_semvalue (int id)

intp (int id)

intv (int id)

Linux共享記憶體與訊號量

最近在學習linux程序間的通訊。寫了一段 加深學習印象 sem com.c include sem com.h 初始化訊號量 int init sem int sem id,int init value return 0 刪除訊號量 int del sem int sem id return 0 ...

共享記憶體,訊號量

一.共享記憶體 共享記憶體 允許兩個不相關的程序訪問同乙個邏輯記憶體。為兩個正在執行的程序之間共享和傳遞資料不同程序之間共享的記憶體通常安排為同一段物理記憶體。程序可以將同一段共享記憶體連線到它們自己的位址空間中,所有程序都可以訪問共享記憶體中的位址,是非同步通訊,也就是說,在第乙個程序結束對共享記...

共享記憶體 訊號量

1.共享記憶體 a.int shmget key t key,size t size,int shm 建立共享記憶體 參一 為共享記憶體段命名 參二 size以位元組為單位指定需要共享的記憶體容量 參三 許可權標誌 ipc creat 0644 返回值 共享記憶體識別符號 非負整數 b.void s...