Существует ли кроссплатформенная библиотека сигналов C (лучше с открытым исходным кодом)? - PullRequest
5 голосов
/ 23 февраля 2011

Я недавно работаю над проектом, в котором мне нужно перенести часть кода Linux C на Windows. В коде используется механизм сигналов Linux (я имею в виду «sigaction», «sigprocmast» и т. Д.), Который не очень хорошо поддерживается в Windows.

Существует ли библиотека C / C ++, которая реализует кроссплатформенный механизм сигналов (лучше с открытым исходным кодом)? В настоящее время мне просто нужна библиотека для поддержки Linux & Windows .

Я думаю, этот вопрос также имел бы для вас смысл , потому что однажды вам может быть дано подобное задание.

Один из моих коллег сказал мне, что ACE - это мощная библиотека, в которой отлично реализован кроссплатформенный механизм сигналов, но он сказал, что это огромная библиотека, и на ее изучение уйдет некоторое время. Мой проект не дает мне слишком много времени, поэтому я пытаюсь найти библиотеку сигналов облегченный и простой в изучении . (Хм ... ну, если библиотеки, о которых вы знаете, довольно большие, пожалуйста, скажите мне.: -)

Я провел много исследований на эту тему в Google, но не смог найти то, что хочу. Вот что я сделал до сих пор 1020 *:

  1. Обыск в Stackoverflow.com. Люди спрашивали много подробностей о том, как использовать сигналы в Linux, но никто не спрашивал о кроссплатформенной реализации сигналов.

  2. Или, на Stackoverflow.com, люди спрашивали механизм, называемый «сигнал-слот». Я не думаю, что это то, что мне нужно.

  3. Искал во всем гугле. Я пробовал ключевые слова "сигнал C" кроссплатформенный "ИЛИ кроссплатформенный -Игра -Python -GUI -Audio -Цифровый -анализ -Slot -Image -Обработка -Socket -Time -Directmedia", но не смог найти то, что я хочу.

Пожалуйста, помогите! Спасибо!

Ответы [ 4 ]

3 голосов
/ 23 февраля 2011

Я преодолел проблему некоторое время назад.Большая проблема состоит в том, что нет никакого эквивалента парадигмы с сигналами на окнах.То, как это делается, отличается.

Я обнаружил, что когда я хотел перенести какое-то программное обеспечение с Linux на Windows, используя библиотеку pthread .Я был рад узнать, что есть порт pthread !Большой !Но они явно указывают в своем документе, что реализован только вызов API pthread_kill(signal) с сигналом 0 (IIRC), и только дает вам состояние потока (например, работает он или нет).

Когда выпосмотрите на переносимые библиотеки потоков (как в boost), они используют точки прерывания для обработки различий между двумя моделями / парадигмой.

В заключение, это зависит от того, как сигналы используются в приложении.ты портируешь.Вы, конечно, можете портировать некоторое поведение, обрабатываемое сигналом в Linux, в Windows, но вы, конечно, не можете портировать сигнальную систему «как есть».

И я нашел трудный путь, который сделать это нелегкокогда вы используете сигнал для прерывания спящих системных вызовов ^^

Если есть решение, я рад услышать другие ответы ^^

my2c

3 голосов
/ 23 февраля 2011

Вероятно, вам стоит заглянуть в CYGWIN.

Проблема с сигналами в Windows заключается в том, что их просто не существует.Windows не POSIX и использует почти совершенно другую методологию, когда дело доходит до управления приложениями.Это все равно, что спросить, где находятся свечи зажигания на дельтаплане, их нет:)

1 голос
/ 23 февраля 2011

Вы можете попробовать портировать вашу библиотеку, используя cygwin. Есть несколько приложений, следующих одному и тому же.

0 голосов
/ 09 июня 2013

Просто проведя какое-то исследование и обнаружив Написание стандартного кода POSIX в Microsoft TechNet.

Мне кажется, это дает более (более длинные) аргументированные подробности о том, что похоже и чтоотличается, и что может, не может и не может быть сделано в своем коде для переноса кода Unix / Linux.

Это часть большего набора информации (см. боковую панель иерархии), которой у меня нетбыло время, чтобы даже просмотреть ...

Помимо CYGWIN, есть также MSYS и MinGW .

Там также, кажется, немного трения (или чаще безразличия)) между общинами, с небольшим количеством людей, охватывающих пропасть.

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