程序間通訊方式 訊號量(Semaphore)

2021-08-21 06:03:50 字數 1986 閱讀 3169

#include 

#include

#include

int semget(key_t key,int nsems,int flags)

//返回:成功返回訊號集id,出錯返回-1

int semctl(int semid, int semnum, int cmd, ...);
union semun;

int

semop(int semid, struct sembuf *sops, size_t nops);

struct sembuf;
#ifndef __comm_h__

#define __comm_h__

#include

#include

#include

#include

#include

#include

#define pathname "."

#define proj_id 0

union semun

;//訊號量是建立還是獲取在於semget函式引數flag的設定

static

int commsemid(int nums, int flags);

//建立訊號量

int creatsemid(int nums);

//獲取已經建立的訊號量

int getsemid(int nums);

//初始化訊號量

int initsem(int semid, int which, int _val);

//pv操作在於它_op的值

static

int sempv(int semid, int which, int _op);

//p操作

int p(int semid, int which, int _op);

//v操作

int v(int semid, int which, int _op);

//由於(system v通訊方式)訊號量生命週期隨核心,所以要銷毀訊號量

int destory(int semid);

#endif

#include "comm.h"

//int

semget(key_t key, int nsems, int sem***);

static int commsemid(int nums, int flags)

else

}int creatsemid(int nums)

// int

semctl(int semid, int semnum, int cmd, ...);

int getsemid(int nums)

int destory(int semid)

else

}int initsem(int semid, int which, int _val)

return0;}

static int sempv(int semid, int which, int _op)

int p(int semid, int which, int _op)

return0;}

int v(int semid, int which, int _op)

return

0;}

#include "comm.c"

int main()

}else

if (waitpid(id, null, 0) < 0)

}destory(semid);

return

0;}

程序間通訊方式———訊息佇列 

IPC 程序間通訊方式 訊號量

includestruct semid ds include int semget key t key,int nsems,int flag 返回 如果成功,返回訊號量集id,出錯返回 1 若建立訊息佇列,key可以指定鍵值,也可以設定為ipc private 0 若開啟進行查詢,則key不能為0,...

程序間通訊 訊號量

ipc識別符號和關鍵字 在終端輸入ipcs,可以看到目前系統中所有的ipc資訊 第一列的key就是ipc的關鍵字,第二列是ipc的識別符號。ftok 函式用於獲得乙個ipc的關鍵字,其函式原型是 key t ftok const char pathname,int proj id 下面是乙個訊號量的...

程序間通訊 訊號量

system ipc中,對於每乙個新建的訊號量 訊息佇列 共享記憶體,都有乙個在整個系統中唯一的識別符號。每個標識也都有唯一對應的關鍵字,關鍵字的資料型別為ket t 在終端輸入命令 ipcs 可以看到目前系統中所有的ipc資訊 共享記憶體段 鍵 shmid 擁有者 許可權 位元組 nattch 狀...