ここに私のコードがあります..
tid の戻り値は、通常、実際の pid から約 2 ~ 3 ずれています。正確なpidが得られない理由を理解しようとして、私は夢中になっています。
したがって、プロセスを強制終了しようとしても、強制終了されません。ps -u | を実行するように記述できると思います。このプロセスに固有のgrep ssh varsですが、私もそうすべきではありません。何か案は?
編集ここに貼り付けられた実際のコードです
- (void)startService {
NSString *temp = @"-D 8080 user@127.0.0.1 -N";
task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/ssh"];
[task setArguments: [temp componentsSeparatedByString:@" "]];
NSPipe *input = [NSPipe pipe];
[task setStandardInput: input];
[task launch];
int tid = [task processIdentifier];
NSLog(@"Starting task: %i", tid);
}
- (void)stopService {
if ([self isRunning]) {
int tid;
tid = [task processIdentifier];
running = false;
[task terminate];
NSString *killTask = [NSString stringWithFormat:@"/bin/kill -KILL %i", tid];
//NSLog(@"Attepting to KILL: %i", tid);
system([killTask cStringUsingEncoding:NSASCIIStringEncoding]);
//[task ];
}
}