我msys2/gcc
在 64 位 MSYS2 安装中使用包,在 Windows 10 64 位下。
示例 C 程序:
#include <stdio.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/stat.h>
int main(void)
{
uint64_t key = ftok("shm.exe", 8);
printf("%llx\n", key);
int r = shmget(key, 1024, S_IRUSR|S_IWUSR|IPC_CREAT);
if ( r == -1 )
printf("FAIL %d\n", errno);
else
printf("OK\n");
}
当我从 MSYS2 shell 运行它时,我得到FAIL 88
这ENOSYS
表明 shmget 没有实现。
是否可以进行通话?完整程序还使用semget
和semop
。
从谷歌搜索来看,在 MSYS2 中似乎有很多与 SYSV IPC 相关的源代码,但可能需要在某处启用某些东西。