如何通过NSTask控制终端?

时间:2013-08-09 04:44:36

标签: pipe nstask

我的源代码如下:

int main(int argc, const char * argv[]) 
{
    char str[80];
    memset(str, 0x00, 80);
    sprintf(str, "%s %s", "open -a","terminal.app");
    NSString *cmdstr = [NSString stringWithUTF8String:str];

    NSTask *task = [NSTask new];
    [task setLaunchPath:@"/bin/sh"];
    [task setArguments:[NSArray arrayWithObjects:@"-c", cmdstr, nil]];

    NSPipe *pipe_out = [NSPipe pipe];
    [task setStandardOutput:pipe_out];

    [task launch];

    NSData *data = [[pipe_out fileHandleForReading] readDataToEndOfFile];

    [task waitUntilExit];

    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@", string);

}

以下是问题:

  1. 我打开了“终端应用程序”,我的目标是通过Pipe或somethings在终端应用程序和主API之间进行通信。如何在终端应用程序和主API之间创建管道?

  2. 打开终端应用程序时,无法打开新的终端应用程序。如何在新标签页或新窗口中打开终端应用程序?

1 个答案:

答案 0 :(得分:0)

对于2.你需要弄清楚如何使用ScriptingBridge