-
ftok
鎖定
ftok是系統IPC鍵值的格式轉換函數。
ftok函數
ftok原型
頭文件
#include <sys/types.h>
#include <sys/ipc.h>
函數原型:
key_t ftok( const char * fname, int id )
fname就是你指定的文件名(已經存在的文件名),一般使用當前目錄,如:
key_t key;
key = ftok(".", 1); 這樣就是將fname設為當前目錄。
id是子序號。雖然是int類型,但是隻使用8bits(1-255)。
在一般的UNIX實現中,是將文件的索引節點號取出,前面加上子序號得到key_t的返回值。
如指定文件的索引節點號為65538,換算成16進製為0x010002,而你指定的ID值為38,換算成16進製為0x26,則最後的key_t返回值為0x26010002。
查詢文件索引節點號的方法是: ls -i
當刪除重建文件後,索引節點號由操作系統根據當時文件系統的使用情況分配,因此與原來不同,所以得到的索引節點號也不同。
如果要確保key_t值不變,要麼確保ftok的文件不被刪除,要麼不用ftok,指定一個固定的key_t值,比如:
#define IPCKEY 0x111
char path[256];
sprintf( path, "%s/etc/config.ini", (char*)getenv("HOME") );
msgid=ftok( path, IPCKEY );[/code]
同一段程序,用於保證兩個不同用户下的兩組相同程序獲得互不干擾的IPC鍵值。
由於etc/config.ini(假定)為應用系統的關鍵配置文件,因此不存在被輕易刪除的問題——即使被刪,也會很快被發現並重建(此時應用系統也將被重啓)。
ftok( )的設計目的也在於此。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:31次歷史版本
- 最近更新: 胡萝卜素啦