1. 程式人生 > 其它 >ftok生成唯一ID

ftok生成唯一ID

技術標籤:一.C

ftok

1.linux ftok()函式

系統建立IPC通訊(如訊息佇列、共享記憶體時)必須指定一個ID值。通常情況下,該id值通過ftok函式得到。
ftok原型如下:

key_t ftok( char * fname, int id )

fname就時你指定的檔名(該檔案必須是存在而且可以訪問的),id是子序號,雖然為int,但是隻有8個位元被使用(0-255)。

當成功執行的時候,一個key_t值將會被返回,否則 -1 被返回。

在一般的UNIX實現中,是將檔案的索引節點號取出,前面加上子序號得到key_t的返回值。如指定檔案的索引節點號為65538,換算成16進製為 0x010002,而你指定的ID值為38,換算成16進製為0x26,則最後的key_t返回值為0x26010002。

查詢檔案索引節點號的方法是: ls -i

以下為測試程式:

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>

#define IPCKEY 0x11

int main( void )
{
    int i=0;
    for ( i = 1; i < 256; ++ i )
        printf( "i:%d, key = %x\n", i, ftok( "/tmp", i ) );

    return 0;
}

在這裡插入圖片描述