如何从整数获取Unix.file_descr实例?OCaml Shell开发疑问
问题解答
整数转Unix.file_descr的方法
OCaml的Unix模块内置了整数与file_descr的转换函数,可直接使用:
Unix.file_descr_of_int:将整数形式的文件描述符转换为Unix.file_descr类型实例- 反向转换可使用
Unix.int_of_file_descr
示例代码实现exec 2>&0的文件描述符复制:
let src = Unix.file_descr_of_int 0 let dst = Unix.file_descr_of_int 2 Unix.dup2 src dst
Menhir相关说明
Menhir作为语法分析器,仅负责解析文本语法并生成抽象语法树(AST),没有直接获取file_descr的API。你需要在Menhir的语义动作中,把解析得到的整数字面值转换为file_descr,或者在后续的语义处理阶段完成转换。
举个简单的语法规则处理示例:
exec_stmt: | "exec" fd1 = INT "&>" fd2 = INT { let src_fd = Unix.file_descr_of_int (int_of_string fd1) in let dst_fd = Unix.file_descr_of_int (int_of_string fd2) in Unix.dup2 src_fd dst_fd }
内容的提问来源于stack exchange,提问作者Lou Falkes
相关产品推荐
相关产品推荐

