我正在开发一个简单的模糊工具,该工具涉及生成一些文件类型的有效实例,并监视正在测试的程序是否失败。该工具的一个关键组件是进程监视模块:该模块应该提供一些函数,给定表示程序路径的字符串和参数(例如,corrupt.py和random_file.wav),指示调用currupt.py random_file.wav是否会触发某些错误。
这类函数的类型签名应该类似于字节-> int,其中int有一些相关的含义(例如,0 ->健康退出)。
此外,我理解暂停问题使得无法判断停止是否是意外行为,所以我可以在任意等待时间绘制界限。
发布于 2017-01-17 19:08:41
您可以从Unix“高级流程和重定向管理”函数开始,例如,create_process prog args new_stdin new_stdout new_stderr是一个通用函数,它将创建运行程序的进程,并允许您重定向通道。所创建的进程将异步运行,因此您可以使用waitpid的WNOHANG标志查看它,或者阻止它直到结束(可能后者不适合您)。
可能,下面的接口应该满足您的需要:
module Monitor : sig
val start : string -> t
val terminate : t -> unit
val on_finish : t -> (int -> unit) -> unit
...
end或者你可以把它简化成
val monitor : string -> (int -> 'a) -> 'a如果您不想管理监视器实例。
或者,您可以查看Lwt 高级过程管理库。它可能会帮你省下几次按键。还有来自Janestreet的另一种异步unix库,您可以尝试。
https://stackoverflow.com/questions/41703970
复制相似问题