multithreading - 为什么 setns mount 不适用于多线程进程?
问题描述
我目前正在寻找答案,为什么 setns() into mount namespace 不适用于多线程进程。我理解为什么 setns() 不允许用户命名空间,这在手册页中明确指出:
多线程进程可能不会使用 setns() 更改用户命名空间。不允许使用 setns() 重新进入调用者的当前用户命名空间。这可以防止已丢弃功能的调用者通过调用 setns() 重新获得这些功能。
但是,对于挂载命名空间没有解释:
如果一个进程是多线程的,它可能不会与新的挂载命名空间重新关联。
我尝试了Calling setns from Go中的以下 GO 代码为 mnt 命名空间返回 EINVAL并生成相同的输出。另外,为什么网络名称空间或任何其他名称空间可以让 setns() 正常工作?
我的消息来源是:
解决方案
推荐阅读
- react-native - 如何在反应原生 bugsnag 中使用后备组件?
- sql - 计算连接表
- android - 分叉 AOSP 源码
- javascript - 从数组中删除重复项,但使用 JS 忽略一个参数
- reactjs - isomorphic-unfetch 在 NextJs 的反应组件中抛出 400 个错误请求
- reactjs - 我正在使用 ag-grid 构建反应应用程序,但在尝试如何在单元格中放置链接时遇到问题
- wordpress - 从 Wordpress 数据库更新序列化数据
- css - 对象拟合、对象定位和绝对定位
- algorithm - A* of Tiles out-place 的自定义启发式 - 瓷砖不合适是不可接受的吗?
- django - Django 表单发布 keyerror