Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.m
- // process
- //
- // Created by piao on 15/8/13.
- // Copyright (c) 2015年 piao. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- #import <sys/sysctl.h>
- #import <signal.h>
- #import <unistd.h>
- NSArray *processInfo() {
- int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_ALL, 0};
- size_t size;
- int st = sysctl(mib, sizeof(mib) / sizeof(CTL_KERN), NULL, &size, NULL, 0);
- struct kinfo_proc * process = NULL;
- struct kinfo_proc * newprocess = NULL;
- do {
- size += size / 10;
- newprocess = realloc(process, size);
- if (!newprocess){
- if (process){
- free(process);
- }
- return nil;
- }
- process = newprocess;
- st = sysctl(mib, sizeof(mib) / sizeof(CTL_KERN), process, &size, NULL, 0);
- } while (st == -1 && errno == ENOMEM);
- if (st == 0) {
- if (size % sizeof(struct kinfo_proc) == 0){
- unsigned long nprocess = size / sizeof(struct kinfo_proc);
- if (nprocess){
- NSMutableArray * array = [[NSMutableArray alloc] init];
- for (unsigned long i = 0; i < nprocess; i++){
- NSNumber *processID = [NSNumber numberWithInt:process[i].kp_proc.p_pid];
- NSString *processName = [[NSString alloc] initWithFormat:@"%s", process[i].kp_proc.p_comm];
- NSDictionary * dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:processID, processName, nil]
- forKeys:[NSArray arrayWithObjects:@"pid", @"name", nil]];
- [array addObject:dict];
- }
- free(process);
- return array;
- }
- }
- }
- return nil;
- }
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- // insert code here...
- NSLog(@"process info:%@", processInfo());
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement