1. 程式人生 > >使用ftok獲取ipc的key值的一點注意事項

使用ftok獲取ipc的key值的一點注意事項

        system V訊息佇列、訊號量還有共享記憶體都採用key_t作為標識,通常使用ftok這個函式來賦予。它的宣告如下

	//成功返回IPC key,若出錯返回 -1
	#include <sys/ipc.h>

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


pathname是一個已存在的檔案路徑,而id則為一個整數。在unix98中規定了,如果id值為0,則函式行為是未定義的,大部分的unix的ftok實現並沒有要求id值必須不為0,只是按照ftok實現中的規則進行key的計算(當然,採用標準沒有定義的寫法總是不好的),AIX在這個問題上走得更遠,它的實現沒有接受未定義的說法,而是直接對id為0的情況返回了-1,所以在這裡,為了更好的移植性,id值應該取為非0.