0

对于我的程序,当客户端加入由服务器创建的 MQ 时,服务器会启动一个线程,并在该线程中创建一个私有 MQ,只有一个特定的客户端拥有该 MQ 的密钥。

当我创建一个密钥时,因为它是众多密钥之一,它是否必须有一个特殊的名称?或者我可以在打电话时使用同一个ftok()吗?

示例代码:

void *thread_function(void *arg){
        key_t keyT;
    int temp;
    temp = i;
    struct my_msgbuf bufT;
    keyT=ftok("server.c", 'B'); //create key for client[temp]
    if ((client[temp].mqID=msgget(keyT, 0666 | IPC_CREAT))==-1){ //private mq for client[temp]
        perror("msgget");
    }
}

或者我必须key_t为每个线程制作一个数组,一个不同的键?

并且keyT=ftok("server.c", 'B');在您使用它时会创建相同的密钥吗?

4

0 回答 0