ftok函式的使用

2021-10-10 20:16:58 字數 921 閱讀 3482

1、ipcs     檢視當前系統中所有建立的ipc物件

2、ipcs -q 檢視建立的訊息佇列

3、ipcs -m 檢視建立的共享記憶體段

4、ipcs -s 檢視建立的訊號量陣列

5、ipcrm 刪除ipc物件

例如:ipcrm -q msqid 刪除標號為msqid的訊息佇列

system v提供的ipc通訊機制需要乙個key值,通過key值就可在系統內獲得乙個唯一的訊息佇列識別符號。

key值可以是人為指定的,也可以通過ftok函式獲得。

如果多個程序想通過ipc物件通訊,則必須找到唯一的標識,而唯一的標識是由key決定的,所以只要key知道,則就可以實現多個程序通訊。

#include

#include

key_t ftok(const char *pathname,int proj_id);

功能:

**pathname:**任意乙個檔名(檔名或者目錄名)

**proj_id:**目標值,範圍一般是0~127

返回值:

成功:鍵值

失敗:返回 -1

案例**:

#include

#include

#include

#include

intmain()

printf

("key = %#x\n"

,mykey)

;return0;

}

執行結果:

ftok函式用法

系統建立ipc通訊 如訊息佇列 共享記憶體時 必須指定乙個id值。通常情況下,該id值通過ftok函式得到。ftok原型如下 key t ftok char fname,int id fname就時你指定的檔名 該檔案必須是存在而且可以訪問的 id是子序號,雖然為int,但是只有8個位元被使用 0 ...

系統函式ftok

系統建立ipc通訊 如訊息佇列 共享記憶體時 必須指定乙個id值。通常情況下,該id值通過ftok函式得到。ftok原型如下 key t ftok char fname,int id fname就時你指定的檔名,id是子序號。在一般的unix實現中,是將檔案的索引節點號取出,前面加上子序號得到key...

php函式ftok的坑

最近在做乙個go和php之間程序通訊的專案,想利用 共享記憶體來實現資料共享。技術本身並不複雜,go利用cgo繫結c的shm函式,php本身就有這個擴充套件,只要編譯的時候 enable shmop即可。但在實際過程中發現總是沒辦法獲取到共享記憶體,後面仔細檢查了一下發現是 ftok的實現不同。c ...