Быстрая проверка неприятной посторонней функции в Haskell(GHC)

Я хотел бы использовать библиотеку Quickcheck на Haskell для проверки кода на Си. Кажется, самый простой способ сделать foreign import и напишите свойство поверх результирующей функции haskell. Проблема заключается в том, что если код C вызывает segfault или может испортить память, мои тесты либо вылетают без вывода, либо делают что-то совершенно непредсказуемое.

Второй альтернативой является создание простых исполняемых оболочек над C-битами и выполнение их вне процесса тестирования через System.Process, Само собой разумеется, что для этого требуется много строительных лесов и сериализационных значений, но, с другой стороны, он может обрабатывать ошибки сегмента.

Есть ли способ сделать foreign import Стратегия так же безопасна, как запуск внешнего процесса?

1 ответ

Вы можете реализовать обертку в вашем текущем процессе, но затем использовать System.Posix.Process.forkProcess безопасно работать в своем собственном процессе, осуществляя необходимые коммуникации с помощью Haskell.

Другие вопросы по тегам