【发布时间】:2013-11-17 16:20:54
【问题描述】:
我正在使用以下代码获取 Cocoa 中正在运行的应用程序列表:
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
MNSLog(@"%@",[app localizedName]);
}
但是,我从终端会话启动的应用程序未出现在列表中(“终端”显示良好)。该应用程序是从执行可可代码的同一用户启动的。
我在终端下启动的应用程序吗?在这种情况下,我怎样才能找到它的名称和参数?
在另一个终端会话中运行 ps 可以正确显示我的进程。
【问题讨论】:
-
你的应用使用窗口服务器吗?
-
从没有 UI 或以其他方式联系窗口服务器的终端启动的进程不是“应用程序”,以供将来参考 - 它们只是进程。 Apple 文档有时也使用“工具”一词。我认为有些人因此而感到困惑。当你处理这个级别的事情时,通常 Cocoa 不会帮助你。您需要使用较低级别的 BSD(甚至是 Mach,尽管只是作为最后的手段)API。
标签: objective-c macos cocoa process nsworkspace