Я использую пакет 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 и получаю FAIL 88
, что означает ENOSYS
, что указывает на то, что shmget не реализован.
Можно ли заставить вызов работать? Полная программа также использует semget
и semop
.
Из поисков в гугле кажется, что в MSYS2 много исходного кода, связанного с SYSV IP C, но, возможно, что-то нужно где-то включить.