我想从我的bash脚本启动一个新进程,该进程不会继承父文件描述符。我无法更改这些文件描述符的创建方式。
使用情况: 应用程序错误 -> 错误挂钩 -> 终止进程并重新启动
有一个类似于Windows的主题 start without inheritance of parents file descriptors,但它在Linux上不起作用。
在shell中是否可能实现这一点?
谢谢
更新 我知道我可以自己关闭这些描述符,我只是想确保无法启动具有某些神奇选项的子级以跳过复制文件描述符。(因为这个选项听起来对我很合理)
使用情况: 应用程序错误 -> 错误挂钩 -> 终止进程并重新启动
有一个类似于Windows的主题 start without inheritance of parents file descriptors,但它在Linux上不起作用。
在shell中是否可能实现这一点?
谢谢
更新 我知道我可以自己关闭这些描述符,我只是想确保无法启动具有某些神奇选项的子级以跳过复制文件描述符。(因为这个选项听起来对我很合理)
ls /proc/$$/fd
可以帮助你记住。 - cevingfor
循环。 - cevingls /proc/$$/fd
将列出顶层shell进程的FD。如果您有打开某些内容并再次分叉的子shell,则此方法无法帮助您。奇怪的是,这可能会在不知不觉中发生,例如由于管道。在子shell中使用$BASHPID
而不是$$
。 - Piotr Findeisen