如何在Julia中使用自定义回调生成“Pipe”或“TTY”?

如何在Julia中使用自定义回调生成“Pipe”或“TTY”?,julia,Julia,我想通过将Julia的STDIN、STDOUT和STDERR连接到MATLAB终端,想象一下Julia在MATLAB mex函数中的嵌入。redirect_std[in | out | err]的文档说明,作为参数传入的流需要是TTY或管道(或TcpSocket,这似乎不适用) 我知道如何为每个流定义正确的回调(基本上,围绕调用MATLAB的输入和fprintf),但我不确定如何构造所需的流。管道在中重命名为PipeEndpoint,但相应的文档没有更新,PipeEndpoint现在被认为是内部

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


我知道如何为每个流定义正确的回调(基本上,围绕调用MATLAB的
输入
fprintf
),但我不确定如何构造所需的流。

管道在中重命名为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

然而,所有这些都不太清楚,所以我创建了一个pull请求来清理这个API:。合并该请求后,
link\u-pipe
调用将变得不必要,
pipe
可以直接传递到
redirect\u-stdout
。此外,无参数版本的返回值将成为常规的
管道

如果您使用的是julia-v0.4,请使用
TCPSocket
而不是
TCPSocket
。e、 g.
a=TCPSocket()