[英]Unable to find running application in Cocoa
我使用以下代码获取在Cocoa中运行应用程序的列表:
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
MNSLog(@"%@",[app localizedName]);
}
但是,我从终端会话开始的应用程序没有出现在列表中(“终端”很好地出现)。 应用程序是从执行可可代码的同一用户启动的。
我在终端下启动了应用程序吗? 在这种情况下,我怎样才能找到它的名字和参数?
在另一个终端会话中运行ps会正确显示我的进程。
使用NSTask
执行ps
Shell命令。 您可以检查ps
手册页以根据要返回的信息确定要传递的参数。 使用NSPipe
和NSFileHandle
从任务中获取结果。
如果你想做一些过滤,你可以在应用程序获取结果之前通过grep
管道ps
输出。
对于您的第一个问题,我认为NSWorkspace
只能看到使用窗口服务器的应用程序,因此您只能看到终端,而不是内部运行的可执行文件。
您可以使用sysctl
或ps
命令获取所有BSD进程的列表。 看看无法检测到与其他用户一起运行的应用程序
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.