如何在Linux上的shell脚本中保留打开的文件句柄?

时间:2016-12-27 01:14:42

标签: linux shell

一些守护进程使用的技巧是打开一个新创建的临时文件句柄,将其从文件系统中删除,然后执行文件描述符。

这可以从C完成,但我很好奇这是否可以从shell脚本中获取?

运行临时二进制文件的示例用例:

  • 将二进制文件编译为临时位置。
  • 打开文件句柄
  • 从文件系统
  • 中删除它
  • def remove(u:List[Int]):List[Int] = { u match { case Nil => u case hd::hd2::tl => if(hd == hd2) remove(hd2::tl) else hd :: remove(hd2::tl) case hd::tl => hd :: remove(tl) } } 文件描述符。

这种方式exec接管了整个过程,我们无需担心清理临时文件。

1 个答案:

答案 0 :(得分:1)

我认为这大致相同,非常简单:

cp /path/to/the/executable /tmp/blah
/tmp/blah arg1 arg2 &
rm -f /tmp/blah
wait

最后的wait将会阻止,直到后台(&)作业完成。

在运行此代码之前,请务必添加错误检查或set -e,否则您可能会执行或删除您不想要的内容。并且您可能希望生成唯一的临时文件名,而不是blah