gpt4 book ai didi

julia - 如何在 Julia 中使用自定义回调生成 `Pipe` 或 `TTY`?

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

我想通过连接 Julia 的 STDIN 将 Julia 嵌入到 MATLAB mex 函数中。 , STDOUT , 和 STDERR到 MATLAB 终端。 redirect_std[in|out|err] 的文档说我作为参数传入的流需要是 TTYPipe (或 TcpSocket ,这似乎不适用)。

我知道如何为每个流定义正确的回调(基本上,围绕对 MATLAB 的 inputfprintf 的调用进行包装),但我不确定如何构造所需的流。

最佳答案

管道在 https://github.com/JuliaLang/julia/pull/12739 中更名为 PipeEndpoint ,但相应的文档没有更新,现在 PipeEndpoint 被认为是内部的。即便如此,预先创建管道仍然是可行的:

pipe = Pipe()
Base.link_pipe(pipe)
redirect_stdout(pipe.in)
@async while !eof(pipe)
data = readavailable(pipe)
# Pass data to whatever function handles display here
end

此外,这些函数的无参数版本已经创建了一个管道对象,因此推荐的方法是:
(rd,wr) = redirect_stdout()
@async while !eof(rd)
data = readavailable(rd)
# Pass data to whatever function handles display here
end

尽管如此,所有这些都不太清楚,所以我创建了一个拉取请求来清理这个 API: https://github.com/JuliaLang/julia/pull/18253 .合并拉取请求后, link_pipe调用将变得不必要和 pipe可以直接传入 redirect_stdout .此外,无参数版本的返回值将变为常规 Pipe .

关于julia - 如何在 Julia 中使用自定义回调生成 `Pipe` 或 `TTY`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32643013/

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