我通过以下代码获取可可中正在运行的应用程序的列表:
for (NSRunningApplication *app in [[NSWorkspace sharedWorkspace] runningApplications]) {
MNSLog(@"%@",[app localizedName]);
}
但是,我从终端会话启动的应用程序未出现在列表中(“终端”很好地出现)。该应用程序是从正在执行可可代码的同一用户启动的。
我启动的应用程序是否在Terminal下?在这种情况下,如何找到其名称和参数?
在另一个终端会话中运行ps可以正确显示我的进程。
使用NSTask
执行ps
Shell命令。您可以检查ps
手册页,以根据要获取的信息确定要传递的参数。使用NSPipe
和NSFileHandle
从任务中获取结果。
如果您想进行一些过滤,则可以在应用获取结果之前ps
通过管道传递输出grep
。
对于第一个问题,我认为NSWorkspace
只能看到使用窗口服务器的应用程序,因此您只会看到终端,而不是内部运行的可执行文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句