系統建立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
沒有留言:
張貼留言