向 macOS Mojave LaunchDaemon 授予相机权限

2023-12-26

我编写了一个 macOS Mojave LaunchDaemon,它会触发 shell 脚本来运行图像快照 https://github.com/rharder/imagesnap程序。目的是每秒从相机捕获一张静态图像。

问题:守护进程失败并出现以下错误。我不知道是什么原因导致它失败,但看起来可能是相机不可用或 root/launchd 没有相机权限。请注意,脚本、自动化应用程序和在命令行上运行的 imagesnap 都可以自行工作,只有当我尝试从 LaunchDaemon 运行它们时才会失败。

我发现了什么:

  1. 该脚本作为普通用户运行良好,作为普通用户使用sudo,并使用 root 用户登录sudo su。我在 iTerm2 中运行它并收到一个弹出窗口,请求访问相机,我批准了。该脚本在由 LaunchDaemon 运行时失败。
  2. 我创建了一个 Automator .app 并使用运行它/usr/bin/open。我再次收到一个弹出窗口,请求我批准相机许可。由 LaunchDaemon 运行时,automator .app 失败。
  3. 如果我省略第 4 行中的 imagesnap 命令,LaunchDaemon 运行脚本时不会出现错误。
  4. .plist 被加载并启动,并连续执行 shell 脚本,就像使用 KeepAlive 键集一样。

snapscript_err.log 片段

2019-02-20 15:54:06.183 imagesnap[34024:2892654] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] Inactive/invalid connection passed'
*** First throw call stack:
(
    0   CoreFoundation                      0x00007fff33eb0ded __exceptionPreprocess + 256
    1   libobjc.A.dylib                     0x00007fff5ff7c720 objc_exception_throw + 48
    2   AVFoundation                        0x00007fff2fe56373 -[AVCaptureStillImageOutput _receiveSampleBuffer:] + 0
    3   imagesnap                           0x000000010590dfcf imagesnap + 12239
    4   imagesnap                           0x000000010590d618 imagesnap + 9752
    5   imagesnap                           0x000000010590cbab imagesnap + 7083
    6   imagesnap                           0x000000010590c6ca imagesnap + 5834
    7   libdyld.dylib                       0x00007fff6104aed9 start + 1
    8   ???                                 0x0000000000000003 0x0 + 3
)
libc++abi.dylib: terminating with uncaught exception of type NSException
/usr/local/bin/snapscript.sh: line 4: 34024 Abort trap: 6           /usr/local/bin/imagesnap -t 1

系统日志片段

Feb 20 15:57:58 macbook com.apple.xpc.launchd[1] (com.example.snapscript[34116]): Service exited with abnormal code: 134
Feb 20 15:57:58 macbook com.apple.xpc.launchd[1] (com.example.snapscript): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Feb 20 15:58:09 macbook com.apple.xpc.launchd[1] (com.example.snapscript[34121]): Service exited with abnormal code: 134
Feb 20 15:58:09 macbook com.apple.xpc.launchd[1] (com.example.snapscript): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.
Feb 20 15:58:19 macbook com.apple.xpc.launchd[1] (com.example.snapscript[34126]): Service exited with abnormal code: 134
Feb 20 15:58:19 macbook com.apple.xpc.launchd[1] (com.example.snapscript): Service only ran for 0 seconds. Pushing respawn out by 10 seconds.

/Library/LaunchDaemon/com.example.snapscript.plist 文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>RunAtLoad</key>
  <true/>

    <key>Label</key>
    <string>com.example.snapscript</string>

    <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/snapscript.sh</string>
  </array>

  <key>KeepAlive</key>
  <true/>

    <key>StandardOutPath</key>
    <string>/var/log/snapscript/snapscript.log</string>

    <key>StandardErrorPath</key>
    <string>/var/log/snapscript/snapscript_err.log</string>
</dict>
</plist>

/usr/local/bin/snapscript.sh 文件

#!/bin/bash

cd /var/snapscript
/usr/local/bin/imagesnap -t 1

None

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

向 macOS Mojave LaunchDaemon 授予相机权限 的相关文章

  • 如何在 mac os 10.6 上安装brew或homebrew

    我已经尝试过多次了 谁能告诉我具体的详细步骤吗 我的Mac操作系统是10 6 8 它抱怨一些丢失的包裹 使用它在 Mac OSX 10 6 8 上安装 ruby e curl fsSL https raw githubusercontent
  • 从内存加载动态库

    是否可以从内存而不是从 mac gcc 上的文件系统加载库 在 Windows 中 我使用 MemoryModule 但它显然不跨平台兼容 首先 要做到这一点 我建议您阅读OS X ABI 动态加载器参考 https developer a
  • 更新 Mac OS 10.7 的 grep

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

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • Java 在 OS X 报告上拖放移动而不是复制

    更新状态 Bug 已报告给 Oracle 目前仍处于开放 未解决状态 https bugs openjdk java net browse JDK 8054325 https bugs openjdk java net browse JDK
  • 如何在 OS X 上安装 Intel TBB?

    如何在 OS X 10 6 上正确安装开源版本的英特尔线程构建模块 TBB 开源版本似乎没有正确的安装脚本 http www threadingbuildingblocks org ver php fid 154 http www thre
  • 我可以根据我正在构建的操作系统导入 Golang 包吗?

    假设我有一个基于哪个操作系统的 go 项目 在某些情况下是哪个发行版 我想使用 Systemd 客户端包 Upstart 客户端包 sysv 客户端包 launchd 客户端包 是否可以有选择地导入每个包 以便我只导入我正在构建的每个操作系
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • window.speechSynthesis.getVoices() 在 macOS safari 15.4 上返回空数组

    功能window speechSynthesis getVoices 在我的浏览器 macOS 12 3 1 Safari 15 4 上返回一个空数组 在以前的版本 Safari 15 3 macOs 12 2 上 该函数按照预期返回一个包
  • 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
  • 卸载我安装的所有 Python 包及其依赖项,而不用破坏我的 Mac

    有很多问题 但正确的方法似乎是手动卸载不需要的所有内容 pip 在卸载时不会卸载包的依赖项 https stackoverflow com questions 7915998 does uninstalling a package with
  • 在 mac os Sierra 上,卡在“设置 CocoaPods 主存储库”上

    转移到 mac os sierra 后 我完全格式化了我的 mac 现在每次运行时我都面临安装 cocoapods 的问题sudo gem install cocoapods pre一切都安装得很好 当我尝试安装 Pod 时 终端堆栈打开S
  • Mac 上的 Delphi - 可能吗? [关闭]

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

    我在运行命令时创建了nodejs项目npm 安装它因一些错误而失败 同一个项目正在进行中ubuntu系统但是当我克隆这个代码时mac系统并尝试运行 npm install 它失败并出现一些错误 我认为 scrypt 模块有问题 但我不知道确
  • Mac OS X - 使钥匙串证书可供 Atlassian Bamboo 使用

    我有一个构建包的 Bamboo 计划 我想用我的开发者证书签署该包 在我的构建脚本中 我有这个 productsign sign Name of my certificate input pkg output pkg 从命令行运行此脚本可以
  • 更改 macOS 应用程序中打开窗口中的文档

    我正在为 macOS 编写一个基于文档的应用程序 我正在尝试编写一项功能来更改当前窗口中的活动文档 以便能够循环浏览文件夹中的下一个 上一个文档 就像使用图像浏览器应用程序一样 我应该调用什么命令来在当前窗口中打开不同的文档 文档表明 op
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • Docker 容器与主机网络的网络性能非常慢

    我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题 我在 Docker 论坛上提出了这个问题 但到目前为止还没有收到答案 Problem 设置 同一本地网络上的两台 Mac 第一个运行 MQTT 代理 mosquitto 第二个运
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它

随机推荐

  • 使用 main() 函数进行递归[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在编写一个程序来使用递归计算阶乘
  • 将图像上传到 codeigniter 中的 MySQL 数据库 blob

    我想将图像上传到mysql数据库以存储许多信息 我已附上 3 MVC 代码供您参考 请帮助我 ref http forum codeigniter com thread 1205 html http forum codeigniter co
  • 子进程返回码中的Python“return not”语句

    我刚刚在Python中遇到了一行非常奇怪的代码 self myReturnCode externalProcessPopen returncode return not self myReturnCode 究竟是什么return not代表
  • 当有新更新可用时,Angular 4 PWA Service Worker 不会更新

    在我更新 Angular 4 PWA 应用程序并部署后 用户无法获得新的更新 直到用户清除缓存并刷新浏览器 Sw不更新 即使我按下 crome Dev 中的更新按钮 它也不会更新 我必须清除缓存并刷新浏览器 我用过这些包 Angular s
  • Discord 机器人:修复“找不到 FFMPEG”

    我想让我的 Discord 机器人加入语音聊天 但每次我这样做时 我都会在 log cmd 中收到错误消息 FFMPEG not found 请帮我 错误图片 这是代码 client on message message gt Voice
  • pymysql无法连接mysql

    我正在尝试使用 pymsql 连接到 MySQL 数据库 主机是 115 28 236 225 并使用默认端口 3306 代码如下 db connect py import pymysql def connDB conn pymysql c
  • jQuery悬停不适用于动态元素

    我从数据库中获取数据 并根据匹配的数量 我想输出 div img src images account related icons link delete png div 我希望该图像在悬停时发生变化 所以我使用以下代码 link dele
  • 空终止字符串的基本原理是什么?

    尽管我非常喜欢 C 和 C 但我还是忍不住对空终止字符串的选择感到摸不着头脑 长度前缀 即 Pascal 字符串在 C 之前就已存在 长度前缀字符串通过允许恒定时间长度查找使多种算法更快 带长度前缀的字符串更难以导致缓冲区溢出错误 即使在
  • Keycloak授权:向域对象或实体添加角色

    我是 Keycloak 框架的新手 在痛苦地编写了自己的解决方案之后 我们希望转换为 KeyCloak 这似乎是一个很有前途的解决方案 但不幸的是缺乏自我描述文档 我已经阅读了教程和术语 但是 我似乎无法通过 Keycloak 概念为我的授
  • R绘图隐式函数外部命令

    我想绘制 x 和 y 的隐式函数 1 0 125 y 2 x 2 0 005我知道它可以绘制为等值线图 但使用 外部 命令时遇到问题 在下面的 x lt seq 0 4 1 01 length 1000 y lt seq 0 3 lengt
  • 是否可以在 ASP.NET MVC FilterAttribute 上使用依赖注入/IoC?

    我有一个简单的习惯FilterAttribute我用它来装饰各种ActionMethods eg AcceptVerbs HttpVerbs Get MyCustomFilter public ActionResult Bar 现在 我希望
  • 为什么 TaskFactory.StartNew 收到 CancellationToken [重复]

    这个问题在这里已经有答案了 可能的重复 任务构造函数中的取消标记 为什么 https stackoverflow com questions 3712939 cancellation token in task constructor wh
  • 如何在 Windows 7 上安装幽灵

    有谁知道 也许是所有相关步骤 如何在 Windows 7 上运行 安装 Wraith 文档 http bbc news github io wraith index html 安装 http bbc news github io wrait
  • 从图像中裁剪椭圆

    我想从图像中提取椭圆区域 图像中面部部分的一部分 最好在 MATLAB 中 例如 在此图像中 我想提取红色边界内的区域 谁能帮我这个 裁剪很容易 您所要做的就是应用适当的蒙版 诀窍是创建这样一个蒙版 假设A是你的图像 试试这个 Create
  • 为什么将整数与长度为 1 的数组进行比较会返回 true,而与长度为 2 或更大的数组进行比较会返回 false?

    为什么将 0 与长度为 1 的数组进行比较会返回 true 而对于长度为 2 或更大的数组则返回 false 例如 var a undefined 0 a a returns false a push 1 1 0 a a returns t
  • 将图外的点设置为上限

    也许这个问题已经存在 但我找不到它 我正在用 Python 绘制散点图 出于说明目的 我不想设置我的轴 范围以包含所有点 可能有一些非常高或非常低的值 而我在这些点中关心的是它们存在 也就是说 它们需要位于情节中 但不是其实际价值 相反 位
  • 实体框架 4 - 从模型更新数据库架构。不擦除表数据

    我正在开发一个新项目 在该项目中我可以使用 Entity Framework 4 从模型到数据库方法进行工作 我正在从事的项目采用敏捷方法 随着时间的推移将推出不同的阶段 模型优先方法适合我的情况吗 我注意到 当您 从模型生成数据库 时 它
  • 核心数据:在一对多关系中按计数排序

    我目前正在尝试设置一个 NSFetchedResultsController 它将根据一对多关系中的实体数量对表视图进行排序 我不确定这在计数时是否会产生影响 但这也是一种反比关系 我认为这样的事情会很好地工作 NSEntityDescri
  • 如何在Oracle Merge语句中使用useparallel(10)提示

    我们如何在oracle merge语句中使用并行 10 提示 我对提示有点陌生 想知道这是否可以用于合并语句 简而言之 首先 必须在服务器上启用并行执行 您需要检查以下3个参数 select name value from v parame
  • 向 macOS Mojave LaunchDaemon 授予相机权限

    我编写了一个 macOS Mojave LaunchDaemon 它会触发 shell 脚本来运行图像快照 https github com rharder imagesnap程序 目的是每秒从相机捕获一张静态图像 问题 守护进程失败并出现