对于我的程序,当客户端加入由服务器创建的 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');
在您使用它时会创建相同的密钥吗?