小编jbr*_*ake的帖子

当您的代码作为LaunchDaemon运行时,如何在不重新启动的情况下首次启动LaunchAgent?

我有一个LaunchDaemon.运行时,它会检查是否安装了SIMBL.如果未安装SIMBL,则使用NSTask在SIMBL.pkg上运行/ usr/sbin/installer.

然后SIMBL的postflight脚本尝试运行launchctl load命令立即启动SIMBL的LaunchAgent:

sudo -u "$USER" -- /bin/launchctl load -F -S Aqua -D user "${LAUNCHD_PLIST}"
Run Code Online (Sandbox Code Playgroud)

这失败了,因为我的LaunchDaemon的NSTask环境没有设置$ USER.

如果我让我的守护进程使用系统配置框架检测当前用户并使用setEnvironment将其传递给NSTask,则startctl会对我产生错误:

Bug: launchctl.c:2325 (23930):13: (dbfd = open(g_job_overrides_db_path, O_RDONLY | O_EXLOCK | O_CREAT, S_IRUSR | S_IWUSR)) != -1
Run Code Online (Sandbox Code Playgroud)

根据定义,我意识到守护进程不应该在用户会话中运行.出于同样的原因,Apple似乎推荐LaunchAgents作为LaunchDaemons的辅助对象,以进行该用户会话工作.有没有办法让这样的代理立即运行?

我把所有的.plists放在正确的位置(它们在重新启动后开始运行,下次启动时会执行常规加载)所以我的第一个想法是告诉launchctl重新加载.但是所有执行此操作的代码都在launchctl.c中注释掉了:

//  { "reload",         reload_cmd,             "Reload configuration files and/or directories" },
Run Code Online (Sandbox Code Playgroud)

...

 * In later versions of launchd, I hope to load everything in the first pass,
 * then do the Bonjour magic on the jobs that need it, and reload them, …
Run Code Online (Sandbox Code Playgroud)

macos daemon launchd nstask

5
推荐指数
1
解决办法
3457
查看次数

在 Cython 中使用半精度 NumPy 浮点数

我正在尝试从一些 Cython 代码将 float16 数据发送到 Nvidia P100 卡。当我使用 float32 时,我可以在 Cython 中定义我的类型,如下所示:

DTYPE = np.float32
ctypedef np.float32_t DTYPE_t
cdef np.ndarray[DTYPE_t, ndim=2] mat = np.empty((100, 100), dtype=DTYPE)
Run Code Online (Sandbox Code Playgroud)

但 Cython 无法找到 np.float16_t 的定义类型,因此我不能仅将 32 替换为 16。如果我尝试提供另一种占用相同空间量的类型(例如 np.uint16_t),我会收到类似错误:

Does not understand character buffer dtype format string ('e')
Run Code Online (Sandbox Code Playgroud)

当我用谷歌搜索时,我所能找到的只是 2011 年的一条线索,内容是人们试图弄清楚如何支持它……现在肯定有解决方案了吗?

python gpu numpy cython

5
推荐指数
1
解决办法
2291
查看次数

标签 统计

cython ×1

daemon ×1

gpu ×1

launchd ×1

macos ×1

nstask ×1

numpy ×1

python ×1