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