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

标签 linux shell

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

这可以通过 C 来完成,但我很好奇这是否可以通过 shell 脚本来完成?


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

  • 将二进制文件编译到临时位置。
  • 打开它的文件句柄
  • 从文件系统中删除它
  • exec 文件描述符。

这样 exec 就接管了进程,我们不需要担心清理临时文件。

最佳答案

我认为这大致是等价的,而且非常简单:

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

末尾的 wait 将阻塞,直到后台 (&) 作业完成。

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

关于linux - 如何在 Linux 的 shell 脚本中保留打开的文件句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41337856/

相关文章:

c - 为什么 "__tracepoint_sched_switch"未定义

c++ - 在 C++ 中的线程之间共享列表

python - 如何分发我的 Python/shell 脚本?

c - 我在 forking() 上收到 "Cannot Allocate Memory"错误的可能原因是什么?

linux - 如何用 Linux Bash 指令替换文件的特殊字符行?

linux - 使用 rosdep 安装时缺少资源

python - IO错误 : [Errno 28] No space left on device while installing TensorFlow

c# - 从 C# 进程向 shell 脚本传递参数

linux - 休息时的 at 命令可以简化吗?

linux - 如果在 Linux 中任何其他列中有零,如何将除第一列以外的整行设为零?