我无法运行超过 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 个进程 的相关文章

  • 为什么我无法在 OS X 上更改 tkMessagebox.askyesno() 上的图标?

    tkMessageBox askyesno Title Message icon tkMessageBox WARNING 在 OS X 上只给我火箭图标 我知道 OS X 和 tkMessageBox 图标有些奇怪 因为tkMessage
  • Python libusb pyusb“mach-o,但架构错误”

    我在使用 pyusb 模块时遇到一些问题 我已将问题范围缩小到一行 并创建了一个小示例脚本来复制错误 usr bin env python This module was created to isolate the problem in
  • macOS:以编程方式检查进程是否作为 launchDaemon 或 launchAgent 运行或从命令行运行

    我想了解我的进程运行的上下文 我想区分以下情况 它作为持久计划任务运行 launchDaemon launchAgent 它被称为按需并由 launchd 使用创建open命令行或双击 它是直接从命令行终端调用的 即 gt bin myPr
  • Node 应用程序中的 process.env 未定义

    运行我的 Node 应用程序时node server js process env回报undefined 所以我无法访问任何环境变量 当我尝试将我的应用程序部署到Duostack http www duostack com Calling
  • 如何在 Swift MacOS 应用程序中实现 AppleScript 支持

    我正在做一个SwiftMacOS 应用程序通过串行端口与外部设备交互 我可以通过应用程序控制设备 但我希望能够使用 AppleScript 在其他应用程序中控制它 我需要的只是one简单的方法就像tell application App t
  • CakePHP:无法访问 MySQL 数据库

    我是 CakePHP 的新手 刚刚完成配置过程 但很困惑为什么 Cake 无法访问我的 MySQL 数据库 Cake 信息页面显示我的 tmp 目录是可写的 FileEngine 正在用于缓存 不知道这意味着什么 并且我的数据库配置文件存在
  • 为什么 NSToolbarItem 自动被禁用?

    我的 Mac 幻灯片应用程序工具栏中的按钮有点问题 我希望在没有活动幻灯片时禁用这些按钮 在有活动幻灯片时启用这些按钮 为了实现这一点 我设置了按钮isEnabled财产给false在开始时 我已经尝试过 Interface Builder
  • 更新 Mac OS 10.7 的 grep

    我想将 Mac 上的 grep 更新到比 Mac OS 10 7 2 附带的 2 5 1 更新的版本 我的问题是 为 Mac 更新 grep 或任何类似程序 的最佳方法是什么 我可以使用 Fink 或 MacPorts 安装新版本并设置路径
  • OSX 上的 ATI OpenCL SDK

    我拥有 ATI GK 的新 MPB 我很好奇 我是否可以下载 OSX 的 sdk 特别是示例集合和分析器 或者我必须本地运行 Windows Linux 因为我只找到了 Windows 和 Linux 的版本 提前致谢 只要您有 Mac O
  • 在 Mac 上运行 Tkinter

    我是一个绝对的新手 我正在尝试为我的学校项目制作 Python GUI 所以我决定使用 Tkinter 当我尝试导入 Tkinter 时 它会抛出以下消息 gt gt gt import tkinter Traceback most rec
  • 如何在 Unix 控制台或 Mac 终端中编译和运行 C/C++ 代码?

    如何在 Unix 控制台或 Mac 终端中编译 运行 C 或 C 代码 如果是一个简单的单源程序 make foo 源文件在哪里foo c foo cpp等等 你甚至不需要 makefile Make 有足够的内置规则将源文件构建为同名的可
  • 从 java 与 C++ 程序通信

    我想从 java 中执行外部 exe 程序 exe 是一个 CLI 应用程序 它在运行时 scanf 中获取输入并根据输入进行输出 我可以使用 java 调用要执行的程序 Process p Runtime getRuntime exec
  • gem install rmagick 在 OS X El Capitan 上失败

    几天前我升级到 El Capitan 并运行了 brew update brew upgrade 它更新了 imagemagick 导致 ruby 的 rmagick gem 停止工作 我想没问题 我就跑 gem install rmagi
  • 如何在 Mac 上使用 Process.Start() 或等效的 Mono 并传入参数

    我正在尝试编写一些 C 代码来启动浏览器Process Start app args 其中 apps 是浏览器的路径 例如 Applications Google Chrome app Contents MacOS Google Chrom
  • 最近打开的应用程序[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有什么方法可以获取最近打开的应用程序 例如 4 个 的列表吗 如果是这样 怎么办 可可麦克 看看LaunchServices LSSh
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • 在 Mac 操作系统上使用 ffmpeg 录制视频

    我想在 mac OS 上使用 ffmpeg 以任何格式录制实时网络摄像头视频 我尝试了很多 但无法找到用于重新编码视频的命令 所以请任何人都可以告诉我 ffmpeg 命令用于使用 Mac 操作系统的网络摄像头捕获视频 提前致谢 对于 Mac
  • 在 mac os Sierra 上,卡在“设置 CocoaPods 主存储库”上

    转移到 mac os sierra 后 我完全格式化了我的 mac 现在每次运行时我都面临安装 cocoapods 的问题sudo gem install cocoapods pre一切都安装得很好 当我尝试安装 Pod 时 终端堆栈打开S
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移

随机推荐

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

    什么时候类比函数更有用 有什么我应该知道的硬性或快速规则吗 它依赖于语言吗 我打算为 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 命令 程序停止响应