【问题标题】:How to terminate a process (not self) from inside a Cocoa application如何从 Cocoa 应用程序中终止进程(不是自身)
【发布时间】:2011-01-07 06:13:17
【问题描述】:

如果 Cocoa 应用程序需要终止另一个进程(它没有产生),在 10.5 OS X 上可以使用哪些 API 来执行此操作?请注意,要终止的进程的进程 ID 在 Cocoa 应用程序中是未知的。需要终止的进程也是Cocoa进程。

【问题讨论】:

  • 如果进程ID未知,进程名称是否已知?

标签: cocoa


【解决方案1】:

使用 NSWorkspace 或 Process Manager 查找进程并获取其 PID,然后像往常一样使用kill

【讨论】:

    【解决方案2】:

    Iirc,NSWorkspace 只会返回用户自己拥有的进程,但是,当然有很多不同的方法来处理这个问题:

    1.) Document by Appple, QA1123

    2.) AGProcess from AGKit

    【解决方案3】:
    NSRunningApplication* app = [NSRunningApplication runningApplicationWithProcessIdentifier:pid];
    [app terminate]; // ask the target to terminate self
    [app forceTerminate]; // the target will not save the data
    

    【讨论】:

      【解决方案4】:

      您必须在杀死它之前检索进程 ID。要杀死一个进程,只需向它发送信号 SIGABT、SIGTERM 或 SIGKILL。

      【讨论】:

        猜你喜欢
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多