任务processIdentifier可可

时间:2013-01-21 06:14:15

标签: macos cocoa nstask

好的,这是我的代码..

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 ];
 }
}

0 个答案:

没有答案