好的,这是我的代码..
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 ];
}
}