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