【问题标题】:Running /bin/ps with NSTask with App Sandboxing enabled使用 NSTask 运行 /bin/ps 并启用 App Sandboxing
【发布时间】:2016-07-26 02:19:11
【问题描述】:

我有一个需要获取进程列表的可可应用。启用应用沙盒后,我得到/bin/ps: Operation not permitted。是否有另一种与应用沙盒兼容的方法?我正在通过NSTask 运行它

【问题讨论】:

  • 这就是为什么沙盒是自 40 年代后期以来桌面计算机上最愚蠢的想法之一。
  • 您对流程的哪些属性感兴趣?
  • @mahaltertin 路径

标签: macos cocoa sandbox nstask appstore-sandbox


【解决方案1】:

您不能从沙盒中运行ps,因为它是一个 set-uid 根程序。

没有其他记录的方式来获取进程列表。但是,libproc.h 中描述了一个未记录的 API。我不确定你是否可以在沙盒中使用它,但值得一试。

【讨论】:

    【解决方案2】:

    您可以使用 [[NSWorkspace sharedWorkspace] runningApplications] 来获取所有进程的列表。这将返回一个 NSRunningApplications 数组。

    https://developer.apple.com/reference/appkit/nsworkspace https://developer.apple.com/reference/appkit/nsworkspace/1534059-runningapplications https://developer.apple.com/reference/appkit/nsrunningapplication

    【讨论】:

    • 不返回所有进程的列表。只是用户进程的列表。
    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2012-11-26
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多