我想从objective-c项目中运行一个终端命令。
当我从终端运行它时,我使用:
cd /Users/user/Desktop/project/;ant release
现在我在Objective-C项目中使用了它:
NSTask *task = [NSTask new];
[task setLaunchPath:@"cd /Users/user/Desktop/project/;ant"];
[task setArguments:[NSArray arrayWithObjects:@"release", nil]];
NSPipe *pipe = [NSPipe pipe];
[task setStandardOutput:pipe];
[task launch];
NSData *data = [[pipe fileHandleForReading] readDataToEndOfFile];
[task waitUntilExit];
[task release];
NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog (@"got\n%@", string);
[string release];
在[task launch];
之后我收到错误:
launch path not accessible
我尝试使用此命令进行检查:
[task setCurrentDirectoryPath:@"/Users/user/Desktop/Czech/"];
[task setLaunchPath:@"/bin/ls"];
它仍然给我一个警告:
working directory doesn't exist.
答案 0 :(得分:3)
您需要以不同的方式设置工作目录:
[task setCurrentDirectoryPath:@"/Users/user/Desktop/project"];
然后将setLaunchPath:
调用更改为指向实际可执行文件的位置:
[task setLaunchPath:@"/usr/bin/ant"];
答案 1 :(得分:0)
嗯,你试着在这里执行一个shell行。
首先尝试更改目录(至/Users/blabla
),然后发出ant
命令。我的猜测是该程序试图找到一个名为cd /Users/user/Desktop/project/;ant
的命令。