0

我正在使用ocaml-dns。

在这里你可以看到它

 printf "retrying query for %d times\n%!" (4-count);

它把我的日志弄得乱七八糟!我已经在处理失败,我不在乎那个输出,我想让它静音。在不分叉和修改库本身的情况下如何做到这一点?我可以以某种方式缓冲它的输出吗?

谢谢

4

1 回答 1

1

如果您使用的是类 Unix 系统,则可以将标准输出重定向到“/dev/null”。像这样的东西可能会起作用:

let nullout = open_out "/dev/null" in
Unix.dup2 (Unix.descr_of_out_channel nullout) Unix.stdout

这是一个显示它有效的会话(至少对我在 OS X 上):

$ ocaml
        OCaml version 4.01.0

# #load "unix.cma";;
# Sys.system "echo unwanted message";;
Error: Unbound value Sys.system
# Sys.command "echo unwanted message";;
unwanted message
- : int = 0
# let nullout = open_out "/dev/null" in
  Unix.dup2 (Unix.descr_of_out_channel nullout) Unix.stdout;;
Sys.command "echo unwanted message";;
Sys.command "echo error message >&2";;
error message

如果你需要在其他时候使用标准输出,你的问题就更糟了。我认为,您可以通过一些额外的用途将 stdout 重定向回原来的位置dup

于 2015-01-22T07:08:08.653 回答