在Haskell(GHC)中快速检查令人讨厌的外部函数

时间:2014-08-08 10:12:54

标签: haskell ghc quickcheck memory-safety

我想使用Haskell的quickcheck库测试一些C代码。最简单的方法似乎是执行foreign import并在生成的haskell函数之上写一个属性。这样做的问题是,如果C代码导致段错误或设法破坏内存,我的测试要么在没有输出的情况下崩溃,要么做一些完全不可预测的事情。

第二种方法是在C位上创建简单的可执行包装器,并通过System.Process在测试过程之外执行它们。毋庸置疑,这样做需要大量的脚手架和序列化值,但另一方面,它可以处理段错误。

有没有办法让foreign import策略像运行外部流程一样安全?

1 个答案:

答案 0 :(得分:1)

您可以在当前进程中实现包装器,但然后使用System.Posix.Process.forkProcess在其自己的进程中安全地运行,使用Haskell实现必要的通信。