Вывод команды «ps aux» искажен при развертывании на iPhone - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь перечислить детали конкретных процессов, используя UITableView. Он отлично отображается при запуске на симуляторе Xcode. Тем не менее, он деформируется при развертывании на реальном устройстве. Озадачивает то, что когда я выполняю команду «ps aux» на Mac и iPhone, форматирование выходных данных кажется одинаковым.

Вот как это выглядит в симуляторе:

enter image description here

Вот как это выглядит на реальном устройстве:

enter image description here

Вот мой код для контроллера, отображающего эти представления:

viewDidLoad:

NSLog(@"myString is :%@", myString);
int processID = [myString intValue];

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/ps"];

arguments = [NSArray arrayWithObjects: @"aux", [NSString stringWithFormat:@"%i", processID],nil];

[task setArguments: arguments];

NSPipe *pipe;
pipe = [NSPipe pipe];
//[task setStandardOutput: pipe];
[task setStandardOutput:pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

NSData *data;
data = [file readDataToEndOfFile];

NSString *string;
string = [[NSString alloc] initWithData: data
                               encoding: NSUTF8StringEncoding];

//  NSLog(@"%@",string);


NSArray *lines= [string componentsSeparatedByString:@"\n"];

NSString *lastline = [lines objectAtIndex:[lines count]-2];
//  NSLog(@"%@",lastline);




lines2= [lastline componentsSeparatedByString:@" "];
NSLog(@"%@",lines2);
for (int i=0; i<[lines2 count]; i++) {

    if([[lines2 objectAtIndex:i] isEqualToString:@""]){
        [lines2 removeObjectAtIndex:i];
    }

}
for (int i=0; i<[lines2 count]; i++) {

    if([[lines2 objectAtIndex:i] isEqualToString:@""]){
        [lines2 removeObjectAtIndex:i];
    }

}


NSLog(@"Lines 2 is%@",lines2);
NSLog(@"Status is %@",[lines2 objectAtIndex:7]);


self.title = @"Process Info";

label = [[NSMutableArray alloc]init];

[label addObject:@"User:"];
[label addObject:@"Process ID:"];
[label addObject:@"CPU(%):"];
[label addObject:@"MEM(%):"];
[label addObject:@"VSZ:"];
[label addObject:@"RSS:"];
[label addObject:@"TT:"];
[label addObject:@"STAT:"];
[label addObject:@"Time Started:"];
[label addObject:@"Time Elapsed:"];
[label addObject:@"Launch Command:"];

[super viewDidLoad];

cellForRowAtIndexPath:

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
NSString *cellValue = [label objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
cell.textColor = [UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1];
cell.font = [UIFont systemFontOfSize:16.0];


UILabel *label2 =  [[[UILabel alloc] initWithFrame:CGRectMake(120.0, 0, 240.0, 
                                                              tableView.rowHeight)] autorelease]; 


label2.font = [UIFont systemFontOfSize:16.0]; 
NSString *cellValue1 = [lines2 objectAtIndex:indexPath.row];
label2.text = cellValue1;
label2.textAlignment = UITextAlignmentLeft; 
label2.textColor = [UIColor blackColor]; 
label2.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | 
UIViewAutoresizingFlexibleHeight; 
[cell.contentView addSubview:label2]; 


return cell;

numberOfRowsInSection:

return [label count];

dealloc:

 [myString release];
[arguments release];
//[lines2 release];
[ResultStringID release];
[values release];
[label release];
[super dealloc];

Вывод команды "ps aux" на Mac:

enter image description here

Вывод команды «ps aux» на iPhone (через оболочку SSH):

enter image description here

1 Ответ

0 голосов
/ 24 августа 2011

Нет гарантии, что ps на iOS делает то же самое, что и на других платформах.Там нет пользовательского интерфейса, который позволил бы пользователю получить доступ к команде ps на устройствах iOS, так что вам повезло, что вообще есть команда ps.Попробуйте зарегистрировать вывод команды, чтобы увидеть, что вы получаете, но не удивляйтесь, если там не так много.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...