【问题标题】:NSRunningApplication.h: "Not all applications have a pid"NSRunningApplication.h:“并非所有应用程序都有 pid”
【发布时间】:2011-07-21 20:47:19
【问题描述】:

来自NSRunningApplication.hprocessIdentifier的评论:

并非所有应用程序都有 pid。

嗯?

我可以在 NSRunningApplication 代表终止进程 (runningProcess.terminated == YES) 的特定情况下看到这种情况,但我想不出一个正在运行的应用程序没有进程 ID 的示例。这有点像 Unix 101。

文档错误还是我遗漏了什么?

【问题讨论】:

  • 另外,来自文档:“不要依赖它来比较进程,而是使用isEqual: 比较 NSRunningApplication 实例。”

标签: cocoa unix pid


【解决方案1】:

这是一个树篱。 “正在运行的应用程序”是用户认为的应用程序。显示在 cmd-tab 切换器等中。不一定要直接对应于进程。在经典环境中,多个应用程序由单个 unix 进程经典托管。在这种情况下,NSRunningApplication 会为每个“应用程序”返回 -1。

从事这项工作的时间足够长的人已经看到了足够多有趣的 hack,他们认为这是一个重要的定义。

【讨论】:

  • 我以前从未听说过“对冲”一词用于类似的事情(但我想我可以从上下文中理解其含义)。请你解释一下好吗?
  • 我认为它来自成语“hedge your bets”。这只是意味着他们试图覆盖他们所有的基础(这是另一个成语——是的英语!)。
  • 正在运行的应用程序列表并不都是 GUI 应用程序。一些不露面的应用程序 (LSUIElement=1) 也出现了:AppleSpell 服务、登录窗口和用户运行的守护程序等等。
猜你喜欢
  • 2019-01-31
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2021-12-11
  • 2012-09-09
  • 1970-01-01
相关资源
最近更新 更多