为什么守护进程会随机停止?

发布于 2024-09-18 01:07:28 字数 298 浏览 11 评论 0原文

这有点与 我之前的但迄今为止尚未成功的问题。我有一个守护进程放置在 LaunchAgents 文件夹(在 Mac 上)中,它应该在后台永久运行,但几天后它就无缘无故地停止了。我不知道为什么,因此我的问题是:

守护进程可能随机停止的原因是什么?

感谢您的帮助!

This is sort of related to a previous, yet so far unsuccessful question of mine. I have a daemon that is placed in the LaunchAgents folder (on Mac) and it should run perpetually in the background, but after a couple of days it just stops for no apparent reason. I have no idea why and thus my question:

What are the reasons that a daemon might randomly stop?

Thanks for the help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

他夏了夏天 2024-09-25 01:07:28

守护进程只是一个持久(分叉)的进程。守护进程崩溃的原因与任何其他程序崩溃的原因相同:

  • 尝试读取或写入内存
    未分配用于读取或
    由该应用程序编写
    (分段错误)或 x86 特定的
    (一般保护故障)
  • 尝试执行特权或
    指令无效
  • 尝试执行 I/O 操作的
    在其执行的硬件设备上
    无权访问
  • 向系统传递无效参数
    调用
  • 尝试访问其他系统的
    应用程序访问的资源
    无权访问
    (总线错误)
  • 尝试执行机器
    带有错误参数的指令
    (取决于CPU架构):
    除以零,分母运算
    或 NaN 值,内存访问
    未对齐的地址等

A Daemon is just a long lasting (forked) process. The reason a Daemon crashes is the same any other program crashes:

  • attempting to read or write memory
    that is not allocated for reading or
    writing by that application
    (segmentation fault) or x86 specific
    (general protection fault)
  • attempting to execute privileged or
    invalid instructions
  • attempting to perform I/O operations
    on hardware devices to which it does
    not have permission to access
  • passing invalid arguments to system
    calls
  • attempting to access other system
    resources to which the application
    does not have permission to access
    (bus error)
  • attempting to execute machine
    instructions with bad arguments
    (depending on CPU architecture):
    divide by zero, operations on denorms
    or NaN values, memory access to
    unaligned addresses, etc.
残花月 2024-09-25 01:07:28

由于它是一个 LaunchAgent,因此它作为登录会话的一部分运行,因此如果您注销,它将被终止。

另一方面,如果它在您注销之前就死了,并且您无法找到/修复导致其崩溃/退出的任何原因,或者您可以通过添加

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

到其 .plist来告诉 launchd 自动重新启动它

Since it's a LaunchAgent, it runs as part of your login session, and hence will be killed if you log out.

On the other hand, if it's dying before you log out, and you can't find/fix whatever is causing it to crash/exit, or you can tell launchd to automatically restart it by adding

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

to its .plist

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文