我无法运行超过 100 个进程

2024-01-13

我有大量的 shell 命令通过授权服务的“AuthorizationExecuteWithPrivileges”调用以 root/admin 权限执行。问题是,一段时间后(10-15 秒,可能是 100 个 shell 命令),程序停止响应,并在调试器中出现以下错误:

无法分叉:errno 35

然后,当应用程序运行时,我无法启动更多应用程序。我研究了这个问题,显然这意味着没有更多的线程可供系统使用。但是,我使用活动监视器进行了检查,发现我的应用程序仅使用 4-5 个线程。

为了解决这个问题,我认为我需要做的是将 shell 命令分离到一个单独的线程中(远离主线程)。我以前从未使用过线程,并且不确定从哪里开始(我找不到全面的示例)

Thanks


正如路易斯·格巴已经指出的那样,你的问题与线程无关。我已相应地编辑了您的标题和标签。

我有大量的 shell 命令通过授权服务的“AuthorizationExecuteWithPrivileges”调用以 root/admin 权限执行。

不要那样做。该功能的存在只是为了让您可以将 root:admin 所有权和 setuid 模式位恢复到您想要以 root 身份运行的工具。

这个想法是,您应该将应该以 root 身份运行的代码与不需要以 root 身份运行的部分分解为一个完全独立的程序,以便需要 root 的部分可以拥有它(通过 setuid 位)并且不需要root的部分可以没有它(通过没有setuid)。

代码示例位于授权服务编程指南 http://developer.apple.com/documentation/Security/Conceptual/authorization_concepts/.

问题是,一段时间后(10-15 秒,可能是 100 个 shell 命令),程序停止响应,并在调试器中出现以下错误:

couldn't fork: errno 35

是的。您一次只能运行几百个进程。这是操作系统强制的限制。

这是一个软限制,这意味着您可以提高它,但只能提高到无法提高的硬限制。查看输出limit and limit -h(在 zsh 中;我不知道其他 shell)。

您需要等待进程完成才能运行更多进程。

然后,当应用程序运行时,我无法启动更多应用程序。

因为您已经运行了允许的尽可能多的进程。 x-hundred-process 限制是针对每个用户的,而不是针对每个进程的。

我研究了这个问题,显然这意味着没有更多的线程可供系统使用。

不,不是的。

errno 错误代码有很多用途。EAGAIN(35,“资源暂时不可用”)可能意味着当由启动线程的系统调用设置时不再有线程,但并不意味着当由另一个系统调用或函数设置时。

您引用的错误消息明确指出它是由fork,这是启动新的系统调用process,不是新的thread。在这种背景下,EAGAIN意思是“你已经运行了尽可能多的进程”。看fork 手册页 http://developer.apple.com/documentation/Darwin/Reference/ManPages/man2/fork.2.html.

但是,我使用活动监视器进行了检查,发现我的应用程序仅使用 4-5 个线程。

See?

为了解决这个问题,我认为我需要做的是将 shell 命令分离到一个单独的线程中(远离主线程)。

每个线程启动一个进程只会帮助您更快地耗尽进程。

我以前从未使用过线程...

听起来您还没有,因为您所指的函数启动了一个进程,而不是一个线程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我无法运行超过 100 个进程 的相关文章

随机推荐

  • 什么时候应该使用类,什么时候应该使用函数?

    什么时候类比函数更有用 有什么我应该知道的硬性或快速规则吗 它依赖于语言吗 我打算为 Python 编写一个脚本来解析不同类型的 json 数据 我的直觉是我应该使用类来完成此操作 而不是使用函数 当您的例程需要保存状态时 您应该使用类 否
  • 如何在linux(ubuntu)上更新ruby?

    我是 ruby 和 linux 的新手 所以我确信这是微不足道的 但我还不知道 我目前安装了 ruby 1 8 7 我想将其更新到 ruby 1 9 我怎样才能做到这一点 sudo apt get install ruby1 9 应该可以解
  • 将地图标记设置为自定义颜色 Android

    我正在制作一个应用程序 可以在地图的某些点添加图钉 我希望我的图钉颜色与我们应用程序的主题颜色相匹配 抱歉我真的是菜鸟 int color Color rgb 255 201 14 mMap MapFragment getFragmentM
  • 如何解决由内联命名空间中的标识符冲突引起的不明确引用

    考虑以下代码 include
  • git 存档与 cp -R

    如果我有一个 git 存储库的克隆作为远程服务器上的缓存副本用于 capistrano vlad 样式部署 那么最好执行 A git archive format tar origin master cd destination tar x
  • TortoiseHg - 如何在不先提交的情况下创建补丁

    当我想从未提交的更改创建补丁时 我真的必须首先提交吗 TortoiseHg 是否不允许在不执行提交的情况下创建补丁 TortoiseHg 2 0 2 在工作台中 您可以右键单击Working Directory行并选择Export Copy
  • R可以画图吗?

    我想知道 R 中是否有任何包可以使用 x y 坐标和形状大小来绘制如下内容 我有车辆前中心的坐标及其尺寸 长度和宽度 Edit 原始数据集如下所示 gt head df Vehicle ID Frame ID Global X Global
  • 使用drawInRect时UIImage Aspect Fill?

    我尝试像内容模式一样绘制scaleAspectFill 我找到了如何使用 AVFoundation 制作 sacelAspectFit 但我找不到scaleAspectFill 如果我绘制水平图像 我不知道 x 值 image draw i
  • 检查 php 中是否存在 url [重复]

    这个问题在这里已经有答案了 if file exists http example com images thumbnail 1286954822 jpg filefound 0 为什么这不起作用 if file exists http e
  • Raspberry Pi 的 QTMultimedia 编译

    我只需要从 Raspberry Pi 上运行的 QT 5 1 应用程序播放简单的音频 wav 或 mp3 文件 我的控制台应用程序已成功构建并部署到 pi 但是 当我尝试播放该文件时收到一条消息 defaultServiceProvider
  • 在 Typescript 中,我可以创建强制需要属性的映射类型吗?

    在 Typescript 中 我们有映射类型 可以将属性从一种类型映射到另一种类型 一个常见的示例是 Partial 类型 它使泛型类型上的所有属性都成为 可选 我想实现相反的效果 比如 必需 其中所有属性都被设置为 必需 而不管它们预先的
  • 基于事件类型的单元格的 jQuery Datepicker 背景颜色

    我需要根据活动类型或当天的预订是否已满 以不同的颜色显示不可用的日期 下面的示例从数据库中获取日期 并将它们作为数组传递给 JavaScript 目前我在数组中传递四个参数 2012 7 15 Some events 例如年 月 日和年 我
  • 如何从颤振中的坐标获取位置名称?

    我想要一个可以获取用户位置并使用 GPS 显示地名的按钮 I tried map view https pub dartlang org packages map view但它只能获取纬度和经度 use the geocoder https
  • ImportError:无法从“google.protobuf.internal”导入名称“builder”

    我正在关注 22点22分 发现这段代码有错误 python SCRIPTS PATH generate tfrecord py x IMAGE PATH train l ANNOTATION PATH label map pbtxt o A
  • 如何通过 XHR onProgress 函数使用压缩/压缩内容?

    我之前见过很多类似的问题 但我还没有找到一个能够准确描述我当前问题的问题 所以这里是 我有一个页面通过 AJAX 加载一个大的 0 5 到 10 MB 之间 JSON 文档 以便客户端代码可以处理它 加载文件后 我不会遇到任何意外的问题 但
  • CakePHP 3 控制器事件实现示例

    CakePHP 3 0 文档包含如何使用模型创建事件的示例 我试了又试 但它不适合我 有谁有使用自定义事件的 CakePHP 3 x 示例 其中控制器在触发事件的控制器中设置变量 假设我们有一个管理仪表板 您希望使用事件将一些代码注入其中
  • 我真的需要为 const 对象实现用户提供的构造函数吗?

    我有代码 class A public A default private int i 1 int main const A a return 0 它在 g 上编译得很好 参见ideone http ideone com PryGs5 但在
  • 看不到远程分支

    我仍在学习 git 不确定一些基本的东西是如何工作的 我通过执行以下操作创建了本地分支 git branch AppStore 我不记得如何将该分支推送到 github com 但我可以在存储库上看到 MyBranch 当我做 git br
  • AngularJS 模块和外部控制器

    我有一个包含多个容器的页面 每个容器都有自己的控制器 但指向一个工厂 该工厂处理与 Web 服务 API 交互的所有逻辑 我想为每个控制器都有一个单独的文件BUT我希望所有这些都在一个模块中 我一生都找不到如何将不同文件中的控制器包含到一个
  • 我无法运行超过 100 个进程

    我有大量的 shell 命令通过授权服务的 AuthorizationExecuteWithPrivileges 调用以 root admin 权限执行 问题是 一段时间后 10 15 秒 可能是 100 个 shell 命令 程序停止响应