2012年1月17日 星期二

ftok 注意事項

系統建立IPC通訊(如Message Queues、share memory時)必須指定一個ID值。通常情況下,該id值通過ftok函數得到。
ftok原型如下:
key_t ftok( char * fname, int id )
fname就時你指定的文件名,id是子序號。

在一般的UNIX實現中,是將文件的索引節點號取出,前面加上子序號得到key_t的返回值。

如指定文件的索引節點號為65538,換算成16進制為0x010002,
而你指定的ID值為38,換算成16進制為0x26,則最後的key_t返回值為0x26010002。
查詢文件索引節點號的方法是: ls -i

當刪除重建文件後,索引節點號由操作系統根據當時文件系統的使用情況分配,因此與原來不同,所以得到的索引節點號也不同。
如果要確保key_t值不變,要嘛確保ftok的文件不被刪除要嘛不用ftok,指定一個固定的key_t值
ref : Here

沒有留言:

張貼留言