gpt4 book ai didi

matlab - 使用 mkfifo 打开的命名管道应该关闭吗?如何关闭?

转载 作者:行者123 更新时间:2023-12-03 22:33:00 26 4
gpt4 key购买 nike

我正在使用命名管道来捕获另一个程序 (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 次),所以如果我重用命名管道并且直到最后才关闭它是否可以?
  • 最佳答案

  • 不。Unix 把所有东西都当成一个文件。命名管道没有什么不同。如果你用完了它,你可能想关闭它,这样你的机器就不会被命名管道弄得乱七八糟,但你不需要关闭它。

  • 编辑以反射(reflect)以下评论,这是正确的。删除 != 关闭。
  • 关闭命名管道的方式与关闭任何文件的方式相同:

  •     fclose(mFifo)

    如已接受的答案中所述,关闭不会删除先进先出。您可能需要单独执行此操作。
  • 重用命名管道并没有错。然而,由您决定何时完成对每次迭代的读/写。一旦从管道中读取了所有数据,您就可以随意多次使用它。
  • 关于matlab - 使用 mkfifo 打开的命名管道应该关闭吗?如何关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14648974/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com