gpt4 book ai didi

ocaml-core 相当于 Unix.create_process

转载 作者:行者123 更新时间:2023-12-05 04:17:00 24 4
gpt4 key购买 nike

我想从 Unix 移植以下命令图书馆到 Jane Street 的 Core.Std.Unix图书馆。

Unix.create_process exec args Unix.stdin Unix.stdout Unix.stderr

也就是说,我有一个可执行文件 exec 和参数 args 并希望使用与当前进程相同的输入/输出/错误 channel 来运行该进程。

我可以接近 Core.Std.Unix.create_process ~exec:exec ~args:args,但不知道如何连接 stdin,stdout,stderr 此函数从核心返回当前进程使用的文件描述符。

最佳答案

您可以将返回的描述符dup2 到您当前的描述符,但我不确定这是否可行。

open Core.Std

let redirect ( p : Unix.Process_info.t ) : unit =
let open Unix.Process_info in
List.iter ~f:(fun (src,dst) -> Unix.dup2 ~src ~dst) [
p.stdin, Unix.stdin;
p.stdout, Unix.stdout;
p.stderr, Unix.stderr
]


let exec prog args : unit =
let p = Unix.create_process ~prog ~args in
redirect p

但还有另一种可能适用的解决方案。考虑只使用 Unix.system,它应该开箱即用。

关于ocaml-core 相当于 Unix.create_process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25031886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com