【问题标题】:Cocoa App: How to find running processCocoa App:如何找到正在运行的进程
【发布时间】:2012-04-04 04:41:56
【问题描述】:

我的应用程序 Cocoa app for OS X 被 Apple 拒绝了。他们是这样说的:

2.23 应用会生成一个进程,该进程会在用户退出应用后继续运行,而无需事先征得用户同意。
产生的 进程是/Applications/MyApp.app/Contents/MacOS/MyApp -psn_0_10148269。

(我更改了应用名称)

我不知道如何找出这个奇怪的过程是什么。找出这一点的最佳方法是什么?也许使用仪器?有没有办法弄清楚 psn_0_10148269 是什么意思?

我的应用程序的某些部分使用(许多)NSTask 对象。该进程会不会是一个未终止的 NSTask 对象?

【问题讨论】:

    标签: xcode cocoa process instruments nstask


    【解决方案1】:

    这是一个非常奇怪的消息。该过程只是您的应用程序本身。 OS X 在启动你的应用程序时传入-psn 参数——这是一个实现细节,通常你永远看不到。

    它肯定与 NSTask 相关。可能您正在运行一项任务,但从未获得其退出状态;那么你的应用程序就变成了zombie process。仔细检查您的 NSTask 使用情况,并确保您没有泄露其中任何一个。

    此外,向 Apple 审核员寻求说明也无妨。

    【讨论】:

    • 感谢您的回答。我会看看我所有的 NSTask 实例。有没有办法让我确保不再发生这种情况?那会很有帮助。
    • 无法确定是否已修复,直到您找出问题的真正原因!我会在 Activity Monitor 或终端中的 pstop 中运行您的应用程序并观察它及其任务。我知道ps 可以显示僵尸任务(“STAT”列中的“Z”),不知道其他的。
    • 好的,我试试。谢谢!
    • 更新:都是我的错。我忘记了我前段时间写的代码,在特殊情况下,如果应用程序仍在等待服务器的应答,它会阻止应用程序退出。但是,如果那个答案永远不会出现......那只是为了测试,我忘了删除它。不过,感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    相关资源
    最近更新 更多