Какой инструмент с gcc под Windows может сделать консольная программа с рабочими именованными семафорами (sem_open)? - PullRequest
0 голосов
/ 10 ноября 2019

Попробуйте создать портативную консольную программу gcc (Linux и Windows). Для Windows 7 я использую gcc версии 8.1.0, i686-posix-dwarf-rev0, созданный проектом MinGW-W64.

Нет ошибок компиляции. Но есть «sem_open: функция не реализована» при выполнении под Windows.

Поддерживает ли какой-либо другой инструмент с gcc (например, Cygwin или MSYS2) именованные семафоры с помощью sem_open ()?

Спасибо.

1 Ответ

0 голосов
/ 11 ноября 2019

Я бы не назвал Cygwin или MSYS2 просто «инструментами», поскольку они представляют собой целые дистрибутивы программного обеспечения, каждый из которых полагается на специальную библиотеку времени выполнения. Тем не менее, MSYS2 не будет решением вашей проблемы. В отличие от Cygwin, целью MSYS2 является не предоставление полного уровня эмуляции POSIX. См. Чем MSYS2 отличается от Cygwin .

Если вы создадите свою проблему с помощью цепочки инструментов Cygwin, у вас будет поддержка большинства распространенных API-интерфейсов POSIX, включая sem_open. Однако ваша программа будет зависеть от всей среды выполнения Cygwin, поэтому вы должны как минимум включить в нее cygwin1.dll.

В качестве альтернативы, хотя вы не совсем точно поняли, что пытаетесьделайте, вы можете реализовать именованные семафоры в своем порте Windows, используя собственный API Windows для семафорных объектов . Вот замечательная небольшая библиотека , которая предоставляет (приблизительно; возможно, достаточно хорошо для вас) семафоры POSIX, реализованные поверх собственного API-интерфейса Windows, хотя я не использовал его, поэтому я не даю никаких гарантий относительно его надежности,более того, это хороший пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...