24

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

第二种选择是在 C 位上制作简单的可执行包装器,并在测试过程之外通过System.Process. 不用说,这样做需要大量的脚手架和序列化值,但另一方面,它可以处理段错误。

有什么方法可以使foreign import策略像运行外部进程一样安全?

4

1 回答 1

1

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

于 2015-02-20T12:11:25.310 回答