需要把32位程序移植到64位,可是运行时就出现了错误。
以下是出现错误的语句:
mqid = msgget(0x10000007, 0666);
这个16进制数值怎么改才可以啊???
与32还是64无关,ipcs -q看看有没有这个message q。
int msgget(key_t key, int msgflg); 第二个参数你就给一个mode算什么,没有IPC_CREAT第二个参数就忽略了。
这是64位上的,程序没有运行起来:
------ Message Queues --------
key msqid owner perms used-bytes messages
这是32位的,程序在运行:
------ Message Queues --------
key msqid owner perms used-bytes messages
0x10000007 0 root 777 0 0
但是我在32位上边可以编译通过,运行也没有问题。
mqid = msgget(0x10000007, IPC_CREAT | 0666); 这样就可以了