好的,这是我的代码..
tid的返回通常比实际pid大约2-3。这让我发疯,想弄清楚为什么它不会给我一个确切的pid。
所以当我试图杀死这个过程时,它不会杀死,我想我可以写一个来做ps -u |特定于此过程的grep ssh变量,但我也不应该这样做。有什么想法吗?
编辑这里是实际粘贴的代码
- (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 ];
}
}