我正在使用命名管道在另一个程序(MATLAB)中捕获外部程序(wgrib2)的输出。MATLAB 代码如下,并system()
访问命令行来制作管道:
system('mkfifo myfifo'); % Make a named pipe myfifo
% Call the external program wgrib2 and dump its output to the named pipe myfifo
system('wgrib2.exe multi_1.glo_30m.hs.201212.grb2 -ij 1 165 -ij 1 166 > myfifo &');
fid = fopen('myfifo', 'r'); % Open the named pipe
a = fscanf(fid, '%c'); % Read the output as character
fclose(fid); % Close the "file" (myfifo still exists afterward)
以下是我的问题:
myfifo
使用命名管道后是否必须关闭它?代码运行后它似乎仍然存在。- 如果
myfifo
需要关闭,关闭它的命令是什么? - 我将多次运行上面的代码示例(> 1000),所以如果我重用命名管道并且直到结束才关闭它可以吗?