특정 프로세스가 실행 중인지 확인하고 NSTask
을 시도했지만 ps
명령을 grepl하려고 할 때 오류가 발생합니다 : ps: illegal argument: |
.프로세스가 실행 중인지 확인하기 위해 NSTask
아마도 nstask를 사용하려고하는 것이 최선의 방법이 아니겠습니까? 나는 (프로세스가 활성화 된 경우) 프로세스가 실행되고 있으면 알려 주시기 위해 한 줄을 반환 찾고 있어요
NSString *process = @"grep \"/usr/sbin/notifyd\"";
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/ps"];
NSArray *arguments;
arguments = [NSArray arrayWithObjects:@"ax",process,nil]; // works, but returns all processes
// arguments = [NSArray arrayWithObjects:@"ax", @"|", process,nil]; // returns illegal argument
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe 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 (@"result:\n%@", string);
: 여기
은 내 코드입니다. 이것은 Mac 응용 프로그램이며 샌드 박스 처리되지 않습니다. 고마워 ..
할 수 있습니다하지 Terminal.app에서 같은 파이프 여러 명령. 두 번째'NSTask'가 필요하고 첫 번째 결과를 표준 입력으로 전달하십시오. – vadian
@vadian : 그건 내가 생각한 것이지만 확실하지 않습니다. 두 번째 NSTask의 문제는 결코 끝나지 않습니다. 첫 번째 작업의 결과를 grep하려고 할 때 멈추는 것처럼 보입니다. nstask가 최선의 방법입니까? –
이 특정 프로세스가 실행 중인지 확인할 수있는 프로세스 이름에 대한 PID를 가져 오는 C 함수 ('sysctl '에 있음)가 있습니다. – vadian