Linux下程序間通訊的方法 訊號量

2021-06-28 16:04:45 字數 1231 閱讀 6257

這裡的訊號量主要是在不同的程序之間使用。 

需要四個操作

p操作v操作

以及通過semctl呼叫command引數設定setval來初始化訊號量,在使用訊號量之前必須要這麼做.

並且可以通過semctl呼叫command設定為ipc_rmid來刪除訊號量id:

因為庫里沒有定義union semun,因此需要自己定義.

用到訊號量的三個函式

semget 用來建立乙個新訊號量或者取得乙個已有訊號量的鍵

semop 用來改變訊號量的值

semctl 用來直接控制訊號量資訊,比如semop之前必須先用semctl給個初值

#include

#include

#include

#include

union semun

;static

int set_semvalue(void);

static

void del_semvalue(void);

static

int semaphore_p(void);

static

int semaphore_v(void);

static

int sem_id;

static

int set_semvalue(void)

static

void del_semvalue(void)

static

int semaphore_p(void)

static

int semaphore_v(void)

//main function

int main(int argc,char *agrv)

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

printf("\n%d - finished\n",getpid());

if(argc>1)

exit(0);

}

jiang@ubuntu:~/mytest

./sem1 1 &  

[1] 12839  

jiang@ubuntu:~/mytest

./sem1 

ooxxooxxooxxooxxoo***xooxxooxxooxxooxxoo

12839 - finished 

12840 - finished 

jiang@ubuntu:~/mytest$

linux下程序間通訊

linux下程序間通訊的幾種主要手段簡介 管道 pipe 及有名管道 named pipe 管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊 訊號 signal 訊號是比較複雜的通訊方式,用於通知接受程序有某種事件發...

Linux下程序間通訊

linux下的程序通訊基本上是從unix平台上的程序通訊繼承來的。而對unix發展做出最大貢獻的倆大主力at t的貝爾實驗室及bsd 加州大學伯克利分校的伯克利軟體發布中心 在程序的通訊方面的側重點有所不同。前者是對unix早期的程序間通訊手段進行了系統的改進和擴充,形成了 system v ipc...

linux程序間通訊的方法

程序間通訊主要包括管道,系統ipc 包括訊息佇列,訊號量,共享儲存 socket.管道包括三種 1 普通管道pipe,通常有種限制,一是半雙工,只能單向傳輸 二是只能在父子程序間使用.2 流管道s pipe 去除了第一種限制,可以雙向傳輸.3 命名管道 name pipe,去除了第二種限制,可以在許...