主要参考文章 : https://segmentfault.com/q/1010000009396800
里面有很多系统进程 , 如果需要过滤的话 , ".app" 肯定是用户安装的程序 .
#import "ViewController.h"
#import <sys/proc_info.h>
#import <libproc.h>
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 参考文章 : https://segmentfault.com/q/1010000009396800
// 沙盒权限App Sandbox改成off
int numberOfProcesses = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0);
pid_t pids[numberOfProcesses];
bzero(pids, sizeof(pids));
proc_listpids(PROC_ALL_PIDS, 0, pids, sizeof(pids));
for (int i = 0; i < numberOfProcesses; ++i) {
if (pids[i] == 0) { continue; }
char pathBuffer[PROC_PIDPATHINFO_MAXSIZE];
bzero(pathBuffer, PROC_PIDPATHINFO_MAXSIZE);
proc_pidpath(pids[i], pathBuffer, sizeof(pathBuffer));
if (strlen(pathBuffer) > 0) {
printf("path: %s\n", pathBuffer);
}
}
}
@end