一些守护进程使用的技巧是打开一个新创建的临时文件句柄,将其从文件系统中删除,然后执行文件描述符。
这可以通过 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/