繁体   English   中英

无法在Cocoa中找到正在运行的应用程序

[英]Unable to find running application in Cocoa

我使用以下代码获取在Cocoa中运行应用程序的列表:

for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
   MNSLog(@"%@",[app localizedName]);
}

但是,我从终端会话开始的应用程序没有出现在列表中(“终端”很好地出现)。 应用程序是从执行可可代码的同一用户启动的。

我在终端下启动了应用程序吗? 在这种情况下,我怎样才能找到它的名字和参数?

在另一个终端会话中运行ps会正确显示我的进程。

使用NSTask执行ps Shell命令。 您可以检查ps手册页以根据要返回的信息确定要传递的参数。 使用NSPipeNSFileHandle从任务中获取结果。

如果你想做一些过滤,你可以在应用程序获取结果之前通过grep管道ps输出。

对于您的第一个问题,我认为NSWorkspace只能看到使用窗口服务器的应用程序,因此您只能看到终端,而不是内部运行的可执行文件。

您可以使用sysctlps命令获取所有BSD进程的列表。 看看无法检测到与其他用户一起运行的应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM