poster
2019-11-29, 08:22
我正在使用命名管道(fifo)在python和MATLAB之间进行通信。从管道读取的MATLAB代码可以正常工作,但是如果未向fifo写入任何内容,则该代码将挂起。我希望在没有可用数据时可以正常超时。
如果管道存在(以bash格式):
$ mkfifo pipe_read 但是没有数据打开MATLAB命令:
>> fid = fopen('pipe_read', 'r'); 挂起,直到有可用数据为止:
$ echo "test data" >> pipe_read 如果没有可用数据,我希望fopen能够返回一个指示错误的文件ID(而不是永远阻止),即表示错误(即类似于-1,当文件不存在时)。
有没有类似于写和读到串行仪器的命令中可用的异步读取的解决方案: http (http://www.mathworks.com/help/matlab/ref/readasync.html) : //www.mathworks.com/help/matlab/ref/readasync.html (http://www.mathworks.com/help/matlab/ref/readasync.html) ?
或者可能将fopen嵌入到启用超时的matlab计时器对象中?
之前曾有人问过这个问题,但没有答案: Matlab从命名管道(fifo)中读取 (https://stackoverflow.com/questions/19467986/matlab-read-from-named-pipe-fifo)
更多&回答... (https://stackoverflow.com/q/25583670)
如果管道存在(以bash格式):
$ mkfifo pipe_read 但是没有数据打开MATLAB命令:
>> fid = fopen('pipe_read', 'r'); 挂起,直到有可用数据为止:
$ echo "test data" >> pipe_read 如果没有可用数据,我希望fopen能够返回一个指示错误的文件ID(而不是永远阻止),即表示错误(即类似于-1,当文件不存在时)。
有没有类似于写和读到串行仪器的命令中可用的异步读取的解决方案: http (http://www.mathworks.com/help/matlab/ref/readasync.html) : //www.mathworks.com/help/matlab/ref/readasync.html (http://www.mathworks.com/help/matlab/ref/readasync.html) ?
或者可能将fopen嵌入到启用超时的matlab计时器对象中?
之前曾有人问过这个问题,但没有答案: Matlab从命名管道(fifo)中读取 (https://stackoverflow.com/questions/19467986/matlab-read-from-named-pipe-fifo)
更多&回答... (https://stackoverflow.com/q/25583670)