Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Julia中使用自定义回调制作`Pipe`或`TTY`?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我想通过将Julia的STDIN,STDOUT和STDERR连接到MATLAB终端来想象我将Julia嵌入到MATLAB mex函数中. redirect_std [in | out | err]的文档说我作为参数传入的流需要是TTY或Pipe(或TcpSocket,似乎不适用). 我知道如何为每个流定义正确的回调(基本上,围绕调用MATLAB的输入和fprintf的包装),但我不确定如何构造所需
我想通过将Julia的STDIN,STDOUT和STDERR连接到MATLAB终端来想象我将Julia嵌入到MATLAB mex函数中. redirect_std [in | out | err]的文档说我作为参数传入的流需要是TTY或Pipe(或TcpSocket,似乎不适用).

我知道如何为每个流定义正确的回调(基本上,围绕@L_42_1@mATLAB的输入和fprintf的包装),但我不确定如何构造所需的流.

解决方法

Pipe在 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调用将变得不必要,管道可以直接传递到redirect_stdout.此外,无参数版本的返回值将成为常规管道.

大佬总结

以上是大佬教程为你收集整理的如何在Julia中使用自定义回调制作`Pipe`或`TTY`?全部内容,希望文章能够帮你解决如何在Julia中使用自定义回调制作`Pipe`或`TTY`?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。